Sql 流利的NHibernate-可能有多个ChildKeyColumns?

Sql 流利的NHibernate-可能有多个ChildKeyColumns?,sql,sql-server,nhibernate,fluent-nhibernate,Sql,Sql Server,Nhibernate,Fluent Nhibernate,我有两种实体,评论和任务。这两种类型都可以由用户添加书签。因此,我创建了一个名为“书签”的表: CREATE TABLE [dbo].[Bookmarks] ( [ID] [int] IDENTITY(1,1) NOT NULL, [FKUserID] [int] NOT NULL, [FKCommentID] [int] NULL, [FKTaskID] [int] NULL) 我的用户实体的这些关系的映射如下所示: var bookmarks = Component(x => x.B

我有两种实体,评论和任务。这两种类型都可以由用户添加书签。因此,我创建了一个名为“书签”的表:

CREATE TABLE [dbo].[Bookmarks] (
[ID] [int] IDENTITY(1,1) NOT NULL,
[FKUserID] [int] NOT NULL,
[FKCommentID] [int] NULL,
[FKTaskID] [int] NULL)
我的用户实体的这些关系的映射如下所示:

var bookmarks = Component(x => x.Bookmarks, x => x.HasManyToMany(b => b.Comments)
.Table("Bookmarks")
.Access.CamelCaseField()
.ParentKeyColumn("FKUserID")
.ChildKeyColumn("FKCommentID")
.AsBag()
.LazyLoad());

bookmarks.HasManyToMany(b => b.Tasks)
    .Table("Bookmarks")
    .Access.CamelCaseField()
    .ParentKeyColumn("FKUserID")
    .ChildKeyColumn("FKTaskID")
    .AsBag()
    .LazyLoad();
我认为,这一切都会很好地工作,但当数据库对象是从NHibernate本身从头开始创建的时候就不行了。然后我得到了一条很好的错误消息

NHibernate.Exceptions.GenericADOException:无法插入集合:[Domain.Model.User.Domain.Model.User.Bookmarks.Tasks#1][SQL:插入书签(FKUserID,FKTaskID)值(@p0,@p1)] ---->System.Data.SqlClient.SqlException:无法将值NULL插入表“xyzautomatedtests.dbo.Bookmarks”的列“FKComentId”;列不允许空值。插入失败。 声明已终止

当然,我本可以用两张桌子来代替这张桌子,但是没有办法让它运行吗?不幸的是,我找不到将配置中的这两个子列设置为可空的方法


有什么提示吗?

请仔细检查您的表定义。SQLException直接来自数据库,因此您遇到的问题来自数据库,而不是.Net


只需确保书签表中的FKComentId列实际上是可为空的。

您使用的是什么版本的.Net?