0

エンティティフレームワークとobjectcontextをどのように使用するかに関するかなり単純な質問。

asp.net Webフォームアプリケーションでは、ほとんどのデータゲッターをデータクラスに実装し、クラス全体のプライベートコンテキストを使用するか、各クラスでコンテキストを宣言する方がよいか(一般的な意味で)を判断しようとしています。メソッド。

例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

個人的には、ポストバック全体で共有コンテキストを使用することを大ファンにしていますが、これらのシナリオはどちらも実際にはこれを実現していません。私の個人的な好みは、EFコンテキストのライフサイクルを管理するためにninjectなどの依存性注入コンテナを使用することです。これは、ポストバック全体をトランザクション化できることを意味します。

実装に関しては、次のようなものを選びます。

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 に答える