2010-08-21 4 views
0

Je rencontre des problèmes pour trouver la syntaxe correcte pour mapper une relation many-to-many avec FluentNHibernate. J'ai regardé plusieurs des autres questions ici sur SO et d'autres endroits, mais je n'ai rien vu avec, spécifiquement, la même structure de table. Espérer quelqu'un qui en sait plus que moi sur FNH peut m'aider à comprendre cela. Voici mes structures de table:FluentNHibernate HasManyToMany syntaxe

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 et WorkItemId dans la table TagWorkItems sont les deux clés étrangères retour aux tables parent. C'est une configuration de table de jointure assez simple pour une relation m2m. Ma classe Tag a une propriété de type ICollection, et ma classe WorkItem a une propriété de ICollection. Je n'arrive pas à comprendre comment configurer les mappages pour ces propriétés. Tout avis serait grandement apprécié. Merci.

Répondre

0

Voici un exemple de ce qu'un mappage WorkItem peut indiquer; le bit readonly dépend de comment vous allez maintenir la relation:

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

Cela semble m'avoir donné ce dont j'avais besoin et fonctionne. Merci beaucoup. Très appréciée. –

Questions connexes