加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用实体框架,首选方式?

发布时间:2020-12-15 08:12:43 所属栏目:百科 来源:网络整理
导读:假设我们已经创建了实体模型,使用它的首选方法是什么?我个人无法下定决心.. 使用ModelAdapter: public statiс Product[] GetProducts(){ using(Entities ctx = new Entities()) { return ctx.Product.ToArray(); }}Product[] ps = ModelAdapter.GetProduc
假设我们已经创建了实体模型,使用它的首选方法是什么?我个人无法下定决心..

>使用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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读