2012-05-18 46 views
0

相對簡單的問題關於實體框架以及如何使用objectcontext。實體框架,在webform應用程序中使用上下文

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

回答

2

個人即時通訊使用您的整個後一個共享上下文背部的大風扇,但是沒有這些場景真正達到這個。我個人的偏好是使用一個依賴注入容器,比如ninject來管理你的EF上下文的生命週期。這意味着您可以製作整個回傳交易。

在執行方面我會去soemthing類似如下:

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(); 
+0

使用DI是有道理的,我說好的想到這一點。我不太瞭解綁定代碼,但那是因爲我是一個簡單的程序員(一個vb.net編碼器啓動),我認爲代碼是MVC的faire,而我正在做web表單。 – Kiemo

+0

是的,它絕對適合MVC模式更好,但它可以爲webforms的參考http://stackoverflow.com/a/6121250/1070291 –

相關問題