C# 4.0 我是nhibernate的新手。能否仅在关系的一侧设置HasManytoMany映射?

C# 4.0 我是nhibernate的新手。能否仅在关系的一侧设置HasManytoMany映射?,c#-4.0,fluent-nhibernate,nhibernate-mapping,C# 4.0,Fluent Nhibernate,Nhibernate Mapping,我为2个实体创建了多对多关系。但映射只设置在一侧。例如,OrderMap类: HasManyToMany(x => x.Fields) .Access.CamelCaseField(Prefix.Underscore) .ChildKeyColumn(ColumnNames.Field_Id) .ParentKeyColumn(ColumnNames.Order_Id) .LazyLoa

我为2个实体创建了多对多关系。但映射只设置在一侧。例如,OrderMap类:

    HasManyToMany(x => x.Fields)
            .Access.CamelCaseField(Prefix.Underscore)
            .ChildKeyColumn(ColumnNames.Field_Id)
            .ParentKeyColumn(ColumnNames.Order_Id)
            .LazyLoad()
            .Cascade.All()
            .Table(TableNames.Order_Fields_Join);
但另一边是野外地图课。我没有指定此映射。到目前为止,Nhibernate一直在犯错误,我不确定是否是因为这个原因。你能告诉我这是否正确吗?
我的nhibernate错误是:“具有相同标识符值的不同对象已与会话关联”

没有必要在两侧映射多个对象,这是完全合法的。您得到的错误是因为您希望保存/更新/删除两个具有相同标识符的不同对象,这表明NHibernate抛出了一个错误。发布引发异常的代码。

我找到了解决方案。正如你提到的,我发现不需要在两边都绘制多对多的地图。错误是因为我试图向父对象添加新的子对象,而不是从数据库存储库中获取该子对象,然后分配给父对象。现在它正在工作。谢谢