我在表ACCOUNT和表USER之间有父/子数据库关系。目前我已经映射了这样的双向Fluent映射:
public class Account {
public virtual IList<User> ListUsers { get; private set; }
public virtual void AddUser(User user)
{
user.Account = this;
ListUsers.Add(user);
}
}
MAPPING: HasMany(x => x.ListUsers).Table("UserInfo").KeyColumn("Id_Account").Inverse().Cascade.All().AsList();
public class User {
public virtual Account Account { get; set; }
public string Username { get; set; }
}
MAPPING: References(x => x.Account).Column("Id_Account");
在实践中,我无法预见到我将要从User实体引用Account实体。同样,我无法预见我想从父帐户实体加载所有用户实体。我对NHibernate相当新,并且想知道上述方法仍然是性能明智的最佳方法吗?是双向关系的首选,我应该只参考ID吗?感谢
答案 0 :(得分:1)
Account
属性上使用延迟加载,那么它只会加载帐户的ID。 ListUsers
属性为inverse=true
,这意味着User
实体负责保存引用。因此,我相信(如果我没记错的话)行ListUsers.Add(user);
不是必需的,因为关联将由User
实体创建。ListUsers
集合。