2

EF4로 다이빙 한 후 NHibernate를 배우려고합니다. Hibernate Session에 EF4 ObjectContext (또는 DbContext)와 동등한가?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에를 사용하는 방법을 찾고 데이터 컨텍스트에 대한 요구하고 있기 때문에 내가 추측하고있어, 그 사건 인 경우에, 당신은 확실히 LINQ 공급자로 NH3를 사용해야 훨씬 향상됩니다.

NH에서 데이터 트랙과 EF는 다르게 동작하므로 EF의 datacontext와 NH의 datacontext는 다르게 동작합니다. 당신은 그것에 대해 배울 때 다른 차이점을 보게 될 것입니다.