出于过滤目的,我想在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>
在这种情况下,它会建议制造商类型的制造商属性和IDManufacturer(int)。 int将是readonly属性,仅用于过滤数据。 例如:
var result = from item in session.Query<ItemShopping>() select item).ToList<ItemShopping();
然后使用linq将结果过滤到具有id的对象。 nhibernate进程(插入/更新)有任何缺点吗?
此致
修改
安装nhibernate profiler之后,我注意到仅基于外键的过滤器(item.Manufacturer.IdManufacturer)不使用代理。所以没有性能问题。 有人可以证实吗?
答案 0 :(得分:2)
您在保存/更新实体时可能会遇到问题。在这种情况下,只需将update="false"
放在附加的Id属性上,它应该像魅力一样工作。如果您只是查询,没问题。顺便说一句,即使你查询多对一,你也不应该遇到性能问题。 NH已知基于Id发出查询,并且不会仅仅为了发出查询而急切地获取任何内容。