Notre système génère des e-mails avec des listes de contacts To/CC/BCC choisies par l'utilisateur. Je voulais les stocker comme suit dans notre base de données SQL Server, voici la structure de la table de base de données simplifiée:Mappage d'une classe avec plusieurs propriétés de collection contenant le même type d'objet
CREATE TABLE [Contact] (
[ContactID] [int] IDENTITY (1, 1) NOT NULL,
[Name] [varchar] (100) NOT NULL,
[EmailAddress] [varchar] (100) NOT NULL,
CONSTRAINT [PK_Contact] PRIMARY KEY CLUSTERED ([ContactID])
)
CREATE TABLE [Email] (
[EmailID] [int] IDENTITY (1, 1) NOT NULL,
[Subject] [varchar] (500) NOT NULL,
[Message] [text] NULL,
[DateSent] [datetime] NOT NULL,
CONSTRAINT [PK_Email] PRIMARY KEY CLUSTERED ([EmailID])
)
CREATE TABLE [EmailContact] (
[EmailID] [int] NOT NULL,
[ContactID] [int] NOT NULL,
[Type] [varchar] (4) NOT NULL,
CONSTRAINT [PK_EmailContactList] PRIMARY KEY CLUSTERED
(
[EmailID],
[ContactID],
[Type]
),
CONSTRAINT [FK_EmailContact_Contact] FOREIGN KEY ([ContactID]) REFERENCES [Contact] ([ContactID]),
CONSTRAINT [FK_EmailContact_Email] FOREIGN KEY ([EmailID]) REFERENCES [Email] ([EmailID])
)
Ce me ressemble à un cas d'un grand nombre à plusieurs entre le courrier électronique et les objets de contact. Cependant, je voudrais l'objet de domaine Email pour avoir 3 propriétés IList distinctes pour les contacts de chaque liste (A/CC/BCC) de telle sorte que je puisse activer le code suivant au travail:
testEmail.ToContacts.Add(contact1)
testEmail.CCContacts.Add(contact2)
testEmail.BCCContacts.Add(contact3)
peut-il être fait sans ajouter un objet de domaine supplémentaire (EmailContact)? Ai-je besoin d'utiliser deux relations plusieurs-à-un avec un objet de domaine supplémentaire comme Billy McCafferty mentions here?
De même, comment représenterais-je mon fichier de mappage NHibernate?
Je n'ai pas eu de réponse ici, j'ai donc posté sur [NHUsers] (http://groups.google.com/group/nhusers) à la place, et j'ai reçu [2 suggestions] (http: // groups .google.com/group/nhusers/browse_thread/thread/f089bfb112380da0) - Je pense que nous allons avec l'idée de Jon Stelly. –