我遇到了一个问题,似乎无法弄清楚我做错了什么。我有一个公司有很多组,一个组有很多用户,一个用户属于一个组。将组添加到公司工作正常,但我无法将用户添加到组。
这是我的映射:
public GroupMapping()
{
Id(x => x.Id);
Map(x => x.Name);
References(x => x.Company).Column("Company_Id");
HasMany(x => x.Users)
.Table("User")
.KeyColumn("Group_Id")
.Cascade.None();
}
public UserMapping()
{
Id(x => x.Id);
References(x => x.Group).Column("Group_Id");
HasMany(x => x.Role)
.KeyColumn("User_Id")
.Cascade.All();
}
在数据库上,我将FK设置为Not Null。密钥位于名为Group_Id的用户表上。我使用以下方法将我的用户分配给该组:
public JsonResult AssignGroup(int id, int groupId)
{
var user = UserRepository.GetById(id);
var group = GroupRepository.GetById(groupId);
user.Group = group;
UserRepository.Save(user);
return Json(new {});
}
我没有收到任何错误,但是Group_Id从未设置过。任何帮助将不胜感激!
谢谢,乔
答案 0 :(得分:1)
HasMany(x => x.Users)
缺少Inverse()
,否则会在您添加用户时抛出。只有用户应该维护FK session.Flush()
或transaction.Commit();