似乎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