Nat*_*her 8 nhibernate views nhibernate-mapping
似乎NHibernate需要将一个id标记指定为映射的一部分.这给视图带来了问题,因为大多数时候(根据我的经验)视图都没有Id.我之前在nhibernate中映射了视图,但是我这样做的方式对我来说似乎很混乱.
这是我目前如何做的一个人为的例子.
制图
<class name="ProductView" table="viewProduct" mutable="false" >
<id name="Id" type="Guid" >
<generator class="guid.comb" />
</id>
<property name="Name" />
<!-- more properties -->
</class>
Run Code Online (Sandbox Code Playgroud)
查看SQL
Select NewID() as Id, ProductName as Name, --More columns
From Product
Run Code Online (Sandbox Code Playgroud)
类
public class ProductView
{
public virtual Id {get; set;}
public virtual Name {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我不需要产品的ID或者在某些视图的情况下我可能没有视图的ID,这取决于我是否可以控制View
有没有更好的方法将视图映射到nhibernate中的对象?
编辑
答案到目前为止
制图
<class name="ProductView" table="viewProduct" mutable="false" >
<id name="Id" type="Guid" />
<property name="Name" />
<!-- more properties -->
</class>
Run Code Online (Sandbox Code Playgroud)
类
public class ProductView
{
public virtual Name {get; set;}
//more properties
}
Run Code Online (Sandbox Code Playgroud)
查看SQL
我还需要NewID()吗?
Select NewID() as Id, ProductName as Name, --More columns
From Product
Run Code Online (Sandbox Code Playgroud)
你可以通过不将Id映射到属性并省略生成器来使它更清洁:
<id column="Id" type="guid"/>
Run Code Online (Sandbox Code Playgroud)
这样,您就可以将问题保留在数据层中,而不会将实施细节泄露给您的域.
归档时间: |
|
查看次数: |
11226 次 |
最近记录: |