在一对一关联关系的时候调用session.Refresh出现More than one row with the given identifier was found:异常的问题,首先在确保数据没有问题的前提下,是因为map配置导致的问题
(这个问题困扰俺几天,最后误打误撞的搞定了,泪奔啊。。。)
请注意红丝字体
正确的示例map(用户对用户详情)如下
public class UsersMap : ClassMap<Users>
{
public UsersMap()
{
Table("Users");
LazyLoad();
Id(x => x.UserID).GeneratedBy.Assigned().Column("UserID").Length(32);
HasOne(u => u.Detail).Cascade.All().ForeignKey("_User");//而不是PropertyRef,切记
Map(x => x.Name).Column("Name").Length(32);
Map(x => x.sex).Column("sex").Length(32);
}
}
详情map
public class UserDetailsMap : ClassMap<UserDetails>
{
public UserDetailsMap()
{
Table("UserDetails");
LazyLoad();
Id(u => u.UserID).Column("UserID").GeneratedBy.Foreign("_User");
HasOne(d => d._User).Constrained().Cascade.SaveUpdate();//这个必须要不然在刷新Refresh的时候又要加载一遍
Map(x => x.Birthday).Column("Birthday");
Map(x => x.address).Column("address").Length(80);
}
}