2011-06-07 94 views
0

为了过滤目的,我想在nhibernate中提出映射属性和id。Nhibernate /建议映射的属性和ID

<?xml version="1.0" encoding="utf-8"?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> 
    <class name="BusinessObjets.ItemShopping,BusinessObjets" table="ADN_Monture" lazy="true"> 
    <many-to-one name="Manufacturer" column="IDManufacturer" cascade="save-update" not-null="true" /> 
<property name="IDManufacturer" column="IDManufacturer" type="int" /> 
    </class> 
</hibernate-mapping> 

在这种情况下,它会提出Manufacturer类型的Manufacturer属性和IDManufacturer(int)。 int将是一个只读属性,仅用于过滤数据。 例如:

var result = from item in session.Query<ItemShopping>() select item).ToList<ItemShopping(); 

,然后与LINQ筛选结果到带有ID的对象。 在nhibernate进程(插入/更新)中是否有任何缺点?

问候

编辑

井中安装NHibernate的探查后,我注意到,仅基于外键(item.Manufacturer.IdManufacturer)过滤器不使用代理服务器。所以没有性能问题。 有人可以确认吗?

回答

2

在保存/更新实体时可能会遇到问题。在这种情况下,只需将update="false"添加到其他Id属性中,它应该像魅力一样工作。没问题,如果你只是查询。顺便说一句,即使您查询多对一,您也不应该遇到性能问题。 NH已知根据Id发出查询,并且不会为发出查询而急切地获取任何内容。

+0

谢谢。高兴地看到明确的答案 – 2011-06-07 14:45:08