假设我们已经创建了实体模型,使用它的首选方法是什么?我个人无法下定决心..
>使用ModelAdapter:
public statiс Product[] GetProducts() { using(Entities ctx = new Entities()) { return ctx.Product.ToArray(); } } Product[] ps = ModelAdapter.GetProducts(); // ... ModelAdapter.UpdateProduct(p);
>看起来整洁;
>但是,有时会创建/释放上下文,对象与上下文失去联系;
>使用上下文:
using(Entities ctx = new Entities()) { Product[] ps = ctx.Product.ToArray(); // ... ctx.SaveChanges(); }
>有效
>但是,代码变得混乱
>混合模式,妥协?
>扩展方法:
using(Entities ctx = new Entities()) { Product[] ps = ctx.GetProducts(); // ... ctx.UpdateProduct(p); }
实际上现在,我正在尝试方法#4,实现实用程序方法作为上下文的扩展.所以我可以使用一个上下文,并对这个上下文进行多次调用.
解决方法
通常使用符合您需求的任何内容,这些内容可维护且适合您应用程序的复杂性.您应该考虑以下几点:
> Never share context among requests,根据您的需要,根据请求,每个操作或每个方法使用上下文.
>如果要对应用程序进行单元测试,可以发现静态方法,有时也可能是扩展方法.但是使用EF测试应用程序是a separate problem.
>如果要在单个工作单元中修改或插入更多项,可以发现每个方法的上下文不是您需要的
>许多开发人员喜欢使用存储库模式将EF功能的访问权限与应用程序的其余部分分开.它有自己的pros and cons.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。