2011-01-13 2 views
2

두 종류의 엔티티, 주석 및 작업이 있습니다. 두 유형 모두 사용자가 책갈피 할 수 있습니다.Fluent NHibernate - 복수의 ChildKeyColumns를 가진 HasManyToMany가 가능합니까?

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 자체로부터 처음부터 생성된다. [Domain.Model.User.Domain.Model.User.Bookmarks.Tasks # 1] [SQL : INSERT INTO 책갈피 (컬렉션을 삽입 할 수 있습니다 : 그럼 좋은 오류 메시지

NHibernate.Exceptions.GenericADOException를 얻을 수 FKUserID, FKTaskID) VALUES (@ p0, @ p1)] ----> System.Data.SqlClient.SqlException : 열 'FKCommentID'테이블에 NULL 값을 삽입 할 수 없습니다 'xyzautomatedtests.dbo.Bookmarks'테이블; 열이 널을 허용하지 않습니다. INSERT가 실패합니다. 명세서가 종료되었습니다.

물론이 두 테이블 대신이 테이블을 사용하고있을 수 있지만이 실행 방법은 없습니까? 불행하게도이 두 자식 열을 nullable로 설정할 수있는 방법을 찾을 수 없습니다.

힌트가 있습니까?

+0

어떤 버전의 .Net을 사용하고 있습니까? – Richard

답변

2

테이블 정의를 다시 확인하십시오. SQLException은 데이터베이스에서 바로 나오므로, 문제는 .Net이 아닌 데이터베이스에서 발생합니다.

책갈피 테이블의 FKCommentID 열이 실제로 Nullable인지 확인하십시오.