实体框架,在webform应用程序中使用上下文

时间:2012-05-18 23:29:42

标签: asp.net entity-framework-4 webforms objectcontext

关于实体框架以及如何使用objectcontext的相当简单的问题。

在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();
        }
     }
}

1 个答案:

答案 0 :(得分: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();