Fluent NHibernate无法更改查找记录?

Fluent NHibernate无法更改查找记录?,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,好吧,我是NHibernate的新手,也许这里有人能解释一下。我有3个表/实体: 应用程序 角色 应用程序角色 听起来,ApplicationRoles是一个查找表,其中包含应用程序和角色的外键,以及一些其他字段,如IsActive 现在在代码中,ApplicationRole同时引用了父级、应用程序和角色。应用程序对象有一个列表,因此它可以引用子ApplicationRole对象。角色并没有,但我试着添加了它,它似乎并没有什么不同 我遇到的问题是,我似乎无法直接加载ApplicationR

好吧,我是NHibernate的新手,也许这里有人能解释一下。我有3个表/实体:

  • 应用程序
  • 角色
  • 应用程序角色
听起来,ApplicationRoles是一个查找表,其中包含应用程序和角色的外键,以及一些其他字段,如IsActive

现在在代码中,ApplicationRole同时引用了父级、应用程序和角色。应用程序对象有一个列表,因此它可以引用子ApplicationRole对象。角色并没有,但我试着添加了它,它似乎并没有什么不同

我遇到的问题是,我似乎无法直接加载ApplicationRole对象、操作它并再次保存它。我可以通过对象自身的PK或两个FKs加载该对象,也可以更改其IsActive字段,但当我将其保存回数据库时,我在应用程序对象及其其他子集合上遇到一个关于“collection not Processing with flush”的错误

我认为这可能是由于延迟加载造成的,因为如果我使用调试器并检查对象的应用程序父引用,则不会发生这种情况,保存过程会很顺利。但是如果我没有,我会得到上面的错误

如果我加载应用程序对象并操作它的子ApplicationRole对象,并保存应用程序本身,它就会工作,但我觉得我不应该这样做


编辑:澄清数据关系

您可以完全放弃类应用程序角色

Application
{
    public IList<Role> Roles { get; private set; }
}

// in ApplicationMap
HasManyToMany(a => a.Roles)
    .Table("ApplicationRole")
    .ParentKeyColumn("application_id")
    .ChildKeyColumn("role_id")
    .Cascade.AllDeleteorphan();
应用程序
{
公共IList角色{get;private set;}
}
//在应用程序映射中
HasManyToMany(a=>a.Roles)
.Table(“应用程序角色”)
.ParentKeyColumn(“应用程序id”)
.ChildKeyColumn(“角色id”)
.Cascade.AllDeleteorphan();

这很好,但不幸的是,链接记录上有1或2位字段,因此它不是一个纯粹的查找表。它有一个字段IsDefault和其他类似的字段。哦,这是应该在问题中的重要信息。我有时间再回答