2010-08-21 4 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 
) 

TagID и WorkItemID в таблице TagWorkItems являются внешними ключами обратно в родительских таблицы. Это довольно простая таблица соединений для соединения m2m. Мой класс Tag имеет свойство типа ICollection, и мой класс WorkItem обладает свойством ICollection. Я не могу понять, как настроить сопоставления для этих свойств. Любые советы будут очень признательны. Благодарю.

ответ

0

Вот пример того, что может сказать отображение WorkItem; бит на чтение зависит от того, как вы будете поддерживать отношения:

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

Это, кажется, дало мне то, что мне было нужно, и работает. Огромное спасибо. Очень признателен. –

Смежные вопросы