2

私はEF4に潜入した後にいくつかのNHibernateを学ぼうとしています。 EF4 ObjectContext(またはDbContext)に相当するものはHibernate Sessionですか?EF4 ObjectContext対NHibernateセッション

具体的には、EF4では、あなたがのObjectContext(あるいはDbContext)から派生し、あなたのクラス例えば、各エンティティの明示的なobjectSetと年代が含まれています。私がこれまで見てきたNHib例で

public class EcommerceContext : ObjectContext { 
     public ObjectSet<Customer> Customers {get; set;} 
     public ObjectSet<Product> Products {get; set;} 
     // etc. 
    } 

、セッションオブジェクトはこの方法では使用されません。何か不足していますか?

答えて

4

NHibernate 3を使用している場合、データコンテキストを実装するのはかなり簡単です。

public class YourDataContext 
{ 
    public ISession Session { get; private set; } 
    public YourDataContext(ISession session) 
    { 
     Session = session; 
    } 

    public IQueryable<Customer> Customers 
    { 
     get 
     { 
      return Session.Query<Customer>(); 
     } 
    } 
} 

NHibernate 2でも同じことが可能ですが少し異なります。あなたはcontribモジュールにあるNHibernate.Linqライブラリが必要です。

public class YourDataContext:NHibernateContext 
    { 
     public YourDataContext(ISession session) 
      : base(session){} 
     public IOrderedQueryable<Customer> Customers 
     { 
      get 
      { 
       return Session.Linq<Customer>(); 
      } 
     } 
    } 

あなたはLINQのを使用するために探しているのDataContextについて尋ねているので、私は推測している、そしてその場合は、あなたは間違いなく、LINQプロバイダとしてNH3を使用する必要がありますが大幅に改善されています。

EFのdatacontextとNHのdatacontextは、NHがobjectrackingやEFなどを実行しないため、異なる動作をすることに注意してください。あなたはそれについて学ぶときに他の違いを見るでしょう。

関連する問題