EF4 ObjectContext与NHibernate会话
我试着在进入EF4之后学习一些NHibernate。等效于EF4 ObjectContext(或DbContext)的是NHibernate会话吗 具体来说,在EF4中,您从ObjectContext(或DbContext)派生,并且您的类包含每个实体的显式对象集,例如:EF4 ObjectContext与NHibernate会话,nhibernate,session,entity-framework-4,objectcontext,isession,Nhibernate,Session,Entity Framework 4,Objectcontext,Isession,我试着在进入EF4之后学习一些NHibernate。等效于EF4 ObjectContext(或DbContext)的是NHibernate会话吗 具体来说,在EF4中,您从ObjectContext(或DbContext)派生,并且您的类包含每个实体的显式对象集,例如: public class EcommerceContext : ObjectContext { public ObjectSet<Customer> Customers {get; set;
public class EcommerceContext : ObjectContext {
public ObjectSet<Customer> Customers {get; set;}
public ObjectSet<Product> Products {get; set;}
// etc.
}
公共类电子商务上下文:ObjectContext{
公共对象集客户{get;set;}
公共对象集产品{get;set;}
//等等。
}
在到目前为止我看到的NHib示例中,会话对象不是这样使用的。我遗漏了什么吗?如果您使用的是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>();
}
}
}
公共类YourDataContext
{
公共ISession会话{get;private set;}
公共YourDataContext(ISession会话)
{
会话=会话;
}
公众可查询客户
{
得到
{
返回Session.Query();
}
}
}
在NHibernate 2中也可能出现同样的情况,但略有不同。您需要contrib模块中的NHibernate.Linq库
public class YourDataContext:NHibernateContext
{
public YourDataContext(ISession session)
: base(session){}
public IOrderedQueryable<Customer> Customers
{
get
{
return Session.Linq<Customer>();
}
}
}
public类YourDataContext:NHibernateContext
{
公共YourDataContext(ISession会话)
:base(session){}
公共可查询客户
{
得到
{
return Session.Linq();
}
}
}
我猜,因为您询问的是您希望使用Linq的datacontext,如果是这样的话,您肯定应该使用NH3,因为Linq提供程序有了很大的改进
应该注意的是,EF中的datacontext和NH中的datacontext的行为将有所不同,因为NH不进行对象跟踪,而EF进行其他操作。当您了解它时,您将看到其他差异