Nhibernate / Propose映射的属性和id

时间:2011-06-07 14:20:08

标签: nhibernate linq-to-nhibernate

出于过滤目的,我想在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)不使用代理。所以没有性能问题。 有人可以证实吗?

1 个答案:

答案 0 :(得分:2)

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