【问题标题】:Entity framework, consuming context in webform app实体框架,在 webform 应用程序中使用上下文
【发布时间】:2018-05-31 01:41:10
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    我个人非常喜欢在整个回帖中使用共享上下文,但是这些场景都没有真正实现这一点。我个人的偏好是使用 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();
    

    【讨论】:

    • 使用 DI 是有道理的,我没有想到这一点。我不太了解绑定代码,但那是因为我是一个简单的程序员(一个 vb.net 编码器启动)并且我认为代码是 MVC faire,而我正在做 Web 表单。
    • 是的,它确实更适合 MVC 模式,但它绝对适用于网络表单,请参阅 stackoverflow.com/a/6121250/1070291
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多