2010-08-21 4 views
0

FluentNHibernate와 다 - 대 - 다 관계를 매핑하기위한 올바른 구문을 이해하는데 약간의 문제가 있습니다. 저는 SO와 다른 곳에서 여러 가지 다른 질문을 보았습니다. 그러나 동일한 테이블 구조로는 아무 것도 보지 못했습니다. 내가 FNH에 대해하는 것보다 더 많이 아는 사람을 원하면이 사실을 알 수 있습니다. 여기 내 테이블 구조의 다음 TagWorkItems 테이블에FluentNHibernate HasManyToMany 구문

CREATE TABLE [dbo].[WorkItems](
    [Id] [bigint] IDENTITY(1,1) NOT NULL, 
    [CategoryId] [bigint] NOT NULL, 
    [DateTime] [datetime] NOT NULL, 
    [Details] [nvarchar](2000) NULL, 
    [Duration] [int] NOT NULL, 
    [DurationInterval] [nvarchar](10) NOT NULL, 
    [Summary] [nvarchar](150) NOT NULL, 
    [UserId] [bigint] NOT NULL, 
PRIMARY KEY CLUSTERED ([Id] ASC) 

CREATE TABLE [dbo].[Tags](
    [Id] [bigint] IDENTITY(1,1) NOT NULL, 
    [Name] [nvarchar](50) NOT NULL, 
PRIMARY KEY CLUSTERED ([Id] ASC) 

CREATE TABLE [dbo].[TagWorkItems](
    [TagId] [bigint] NOT NULL, 
    [WorkItemId] [bigint] NOT NULL, 
CONSTRAINT [TagId_WorkItemId_PK] PRIMARY KEY CLUSTERED 
(
    [TagId] ASC, 
    [WorkItemId] ASC 
) 

TagId 및 WorkItemId는 모두 외래 키 다시 부모 테이블입니다. 그것은 m2m 관계에 대한 매우 간단한 직선 결합 테이블 설정입니다. My Tag 클래스에는 ICollection 유형의 속성이 있고 MyWorkItem 클래스에는 ICollection 속성이 있습니다. 이러한 속성에 대한 매핑을 설정하는 방법을 알아낼 수 없습니다. 모든 조언을 크게 주시면 감사하겠습니다. 감사.

답변

0

다음은 WorkItem 매핑의 예입니다. 읽기 전용 비트는 관계를 어떻게 유지할 것인가에 달려 있습니다 :

HasManyToMany(x => x.Tags) 
      .Table("TagWorkItems") 
      .ParentKeyColumn("WorkItemId") 
      .ChildKeyColumn("TagId") 
      .AsSet() 
      .ReadOnly(); 
+0

그게 제가 필요로하고 작동하는 것 같아요. 매우 감사합니다. 매우 감사. –

관련 문제