我有以下课程
public class Room
{
public virtual Guid Id { get; set }
public virtual string Name { get; set }
public virtual Guid LocId { get; set }
public virtual Location Loc { get; set; }
}
我启动事务并调用Session.Save用于新实体,并将其正确写入数据库,但如果我立即调用GetList(),则返回列表,并为除新实体之外的所有实体分配Loc属性,但如果我在调用之前设置Loc保存它是为新实体分配的 . Flush()无法解决问题 . 我错过了什么,我宁愿不让位置设置它 .
2 回答
映射
Loc
和LocId
是NHibernate的错误用法 .使用
room.Location = session.Load<Location>(locId)
分配位置 .您可以使用
Session.Evict
函数从会话中逐出您的对象,否则它将加载您在会话对象中的给定ID . 但是,我强烈建议您从映射中删除LocId属性 .