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?