我们使用NHibernate进行DB操作,而在数据库中,Configuration表中有一个Organisation的引用。这是现有的代码,不能更改。
配置表在整个应用程序中大量使用,因此我们希望将OrganisationId包含在Configuration模型类中,但不包括在表中,因为它已经具有引用对象。这样,当我们只需要OrganisationId时,我们将避免加载整个组织对象。
//Configuration.hbm.xml
<many-to-one name="Organisation"
class="Organisation"
not-null="false"
foreign-key="FK_ConfigurationItem_Organisation"
unique-key="UniqueConfigurationItemName"/>
//Configuration.cs (Model Class)
public virtual Organisation Organisation { get; set; }如何修改hbm或模型类以获得organisationId,而不将此字段包括在表中?
我是NHibernate的新手,并且坚持这个要求。
如有任何建议,将不胜感激。谢谢
发布于 2022-02-26 01:21:50
不应该需要手动尝试这种优化,因为NHibernate有多个选项可以自己处理这个问题,而且该方法对于大量使用的对象(又名为object )特别有效。行)。如果您使用带有缓存的会话对象,NHibernate将预先访问缓存(又名)。内存)而不是从数据库加载(第二、第三或.时间)。如果您使用急切加载或连接加载,那么NHibernate将在数据库的第一个sql中包含简单的foreigen键,这是一种比延迟加载更快的方法(只有在他的foreigen键从未被访问过的情况下才会很糟糕)。
但
这只是一个猜测,我不能百分之百肯定这是我想要做的,但是我不小心把一个列映射了两次,你也可以为这个组织做一次,一次作为一个预测键,一次作为一个简单的列(巫婆类型的组织是是的)。确保“简单列”属性的设置者不是公共的!确保更新外键设置器中的“简单列”。
问候
朱伊·朱卡
https://stackoverflow.com/questions/68767494
复制相似问题