没有问题;我只是好奇 FluentNHibernate/NHibernate 如何知道要访问哪些行。
在以下伪代码中,我有这些实体:
public class User
{
public virtual int Id { get; protected set; }
public virtual IList<Friend> Friends { get; set; }
}
public class Friend
{
public virtual int Id { get; protected set; }
public virtual User User { get; set; }
public virtual String FunnyProperty { get; set; }
}
与这种一对多的关系:
public class UserMap : ClassMap<User>
{
Id(x => x.Id);
// One user has many friends
HasMany(x => x.Friends).KeyColumn("UserId")...
}
public class FriendMap : ClassMap<Friend>
{
Id(x => x.Id);
References(x => x.User, "UserId")...
}
如果我运行以下代码来建立双向关系:
var user = new User().Friends.AddRange( /* 5 friends */ );
/* 5 friends */.ForEach(friend => friend.User = user);
然后设置:
user[2].FunnyProperty = "a magic string";
然后,在可视化数据库资源管理器工具中,我将表用户视为:
ID -------------------------------------- 63 --------------------------------------
和表Friends为:
身份证 | 用户名 | 有趣的属性 -------------------------------------- 24 | 63 | (空值) -------------------------------------- 25 | 63 | (空值) -------------------------------------- 26 | 63 | 一根魔线 -------------------------------------- 27 | 63 | (空值) -------------------------------------- 28 | 63 | (空值) --------------------------------------
FluentNHibernate/NHibernate 如何“记住” id 26作为 中的第三个Friend
对象user.Friends
?假设您提交事务,在其他地方开始另一个事务,然后检索相同的user.Friends[2]
. FluentNHibernate/NHibernate 如何知道访问id 为 26的行?
尤其是当您有一个Friends表,其中有许多不同的用户浮动时,如下所示,FluentNHibernate/NHibernate 如何“记住”要访问哪一行?:
身份证 | 用户名 | 有趣的属性 -------------------------------------- 24 | 24 | (空值) -------------------------------------- 25 | 89 | (空值) -------------------------------------- 26 | 66 | 一根魔线 -------------------------------------- 27 | 12 | (空值) -------------------------------------- 28 | 66 | (空值) -------------------------------------- 28 | 89 | (空值) --------------------------------------