0

关于实体框架以及如何使用对象上下文的相当简单的问题。

在一个 asp.net webform 应用程序中,我在一个数据类中实现了大多数数据获取器,并试图确定它是否更好(在一般意义上更好)为整个类提供一个私有上下文或在每个类中声明一个上下文方法。

示例 1:

public class Data
{
     private MyEntity context = new MyEntity();
     public Customer GetCustomer()
     {
        return context.Customer.Single();
     }

     public Order GetOrder()
     {
        return context.Order.Single();
     }
}

或示例 2:

public class Data
{
     public Customer GetCustomer()
     {
        using (MyEntity ctx = new MyEntity()) 
        {
           return context.Customer.Single();
        }
     }

     public Order GetOrder()
     {
        using (MyEntity ctx = new MyEntity()) 
        {
           return context.Order.Single();
        }
     }
}
4

1 回答 1

2

我个人非常喜欢在整个回帖中使用共享上下文,但是这些场景都没有真正实现这一点。我个人的偏好是使用 ninject 之类的依赖注入容器来管理 EF 上下文的生命周期。这意味着您可以使整个回发成为事务性的。

在实施方面,我会选择以下内容:

public class Data
{
    private MyContext _context;
    public Data(MyContext context)
    {
       _context = context;
    }

     public Customer GetCustomer()
     {
        return _context.Customer.Single();
     }

     public Order GetOrder()
     {
        return _context.Order.Single();
     }
}

具有类似于以下内容的绑定:

Bind<MyContext>().ToSelf().InRequestScope();
于 2012-05-19T00:16:28.150 回答