2010-08-21 60 views
0

我在找出用於映射與FluentNHibernate的多對多關係的正確語法時遇到了一些問題。我在SO和其他地方查看了其他幾個問題,但沒有看到具體的表格結構。希望有人比我更瞭解FNH可以幫助我弄清楚這一點。這裏是我的表結構: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 
) 

標籤識別和WorkItemId在TagWorkItems表都是外鍵回父表。這是一個非常簡單的關於m2m關係的連接表設置。我的標記類具有ICollection類型的屬性,而我的WorkItem類具有ICollection屬性。我似乎無法弄清楚如何爲這些屬性設置映射。任何建議將不勝感激。謝謝。

回答

0

下面是一個WorkItem映射可能說的例子;只讀位取決於你將如何維持這種關係:

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

這似乎給了我什麼我需要和工作。非常感謝。非常感激。 – 2010-08-21 02:39:56