我有以下课程
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属性,但如果我在调用Save之前设置了Loc,则会为新实体分配。 Flush()无法解决问题。我错过了什么,我宁愿不让位置设置它。
答案 0 :(得分:0)
您可以使用Session.Evict
函数从会话中逐出您的对象,否则它将加载您在会话对象中的给定ID。但是,我强烈建议您从映射中删除LocId属性。
答案 1 :(得分:0)
映射Loc
和LocId
是NHibernate的错误用法。
使用room.Location = session.Load<Location>(locId)
分配位置。