似乎NHibernate需要将一个id标记指定为映射的一部分。这在大多数情况下都会带来问题(根据我的经验),视图不会有Id。我之前在nhibernate中映射过视图,但他们看起来对我来说似乎很混乱。在NHibernate中映射视图的策略
这是一个人为的当前我如何做的例子。
映射
<class name="ProductView" table="viewProduct" mutable="false" >
<id name="Id" type="Guid" >
<generator class="guid.comb" />
</id>
<property name="Name" />
<!-- more properties -->
</class>
查看SQL
Select NewID() as Id, ProductName as Name, --More columns
From Product
类
public class ProductView
{
public virtual Id {get; set;}
public virtual Name {get; set;}
}
我并不需要一个ID为在p roduct或在一些意见的情况下,我可能没有一个id为视图,具体取决于我是否可以控制视图
是否有更好的方法将视图映射到nhibernate中的对象?
编辑
回答到目前为止
映射
<class name="ProductView" table="viewProduct" mutable="false" >
<id name="Id" type="Guid" />
<property name="Name" />
<!-- more properties -->
</class>
类
public class ProductView
{
public virtual Name {get; set;}
//more properties
}
查看SQL
我还需要NewID()吗?
Select NewID() as Id, ProductName as Name, --More columns
From Product
是否意味着我可以从TSQL Select中删除NewID(),因为它仅用于满足nhibernate需要的ID – 2010-06-03 05:53:24
否,这意味着您的类不需要Id属性。 – 2010-06-03 12:21:53
本的权利。 NHibernate不需要将Id映射到一个属性,但它总是需要一种方法来标识持久化实例。 – 2010-06-03 15:09:15