【问题标题】:Fluent NHibernate Bidirectional HasMany Mapping leaving orphaned recordsFluent NHibernate 双向 HasMany 映射留下孤立记录
【发布时间】:2012-07-26 10:18:02
【问题描述】:

我遇到了问题,似乎无法弄清楚我做错了什么。我有一个公司有很多组,一个组有很多用户,一个用户属于一个组。将组添加到公司工作正常,但是我无法将用户添加到组。

这是我的映射:

  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 从未设置。任何帮助将不胜感激!

谢谢,乔

【问题讨论】:

    标签: c# nhibernate fluent-nhibernate mapping


    【解决方案1】:
    • HasMany(x => x.Users) 缺少 Inverse() 否则在添加用户时会抛出。只有用户才能维护 FK
    • 您的存储库方法中很可能缺少 session.Flush()transaction.Commit();

    【讨论】:

      猜你喜欢
      • 2012-04-03
      • 2013-09-01
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多