беглый nhibernate, много-много карт - PullRequest
1 голос
/ 21 февраля 2010

Я пытаюсь отобразить эти объекты Поля таблицы сообщений: Id, сгенерированный Id, SentFrom int, sentTo int где Sentfrom и sentTo связаны с таблицей пользователей У меня также есть таблица линкеров Таблица MessageUser с userId и MessageId

    CREATE TABLE [dbo].[MessageUser](
 [MessageId] [int] NOT NULL,
 [UserId] [int] NOT NULL,
 CONSTRAINT [PK_MessageUser] PRIMARY KEY CLUSTERED 
(
 [MessageId] ASC,
 [UserId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[MessageUser]  WITH CHECK ADD  CONSTRAINT [FK_MessageUser_Messages] FOREIGN KEY([MessageId])
REFERENCES [dbo].[Messages] ([Id])
GO
ALTER TABLE [dbo].[MessageUser] CHECK CONSTRAINT [FK_MessageUser_Messages]
GO
ALTER TABLE [dbo].[MessageUser]  WITH CHECK ADD  CONSTRAINT [FK_MessageUser_Users] FOREIGN KEY([UserId])
REFERENCES [dbo].[Users] ([Id])
GO
ALTER TABLE [dbo].[MessageUser] CHECK CONSTRAINT [FK_MessageUser_Users]
GO

Я думаю, что дизайн БД в порядке, но я не могу найти лучший способ отобразить сущности моя конечная цель - иметь возможность получать сообщения sentTo и message sentFrom, используя пользователя и сущности сообщения. Любая идея, как достичь этой цели. Класс отображения будет выглядеть как

public MessageMap()
        {
            Table("Messages");
            Id(x => x.Id).GeneratedBy.Identity();
            Map(x => x.Title);
            Map(x => x.Body);
            References(x => x.Recipient).Column("SentTo").Column("Id");//.Cascade.All();
            References(x => x.Sender).Column("SentFrom").Column("Id");//.Cascade.All();
        }

EDIT Кажется, это работает без использования дополнительной таблицы MessageUser

  public MessageMap()
        {
            Table("Messages");
            Id(x => x.Id).GeneratedBy.Identity();
            Map(x => x.Title);
            Map(x => x.Body);

            References(x => x.Recipient).Column("SentTo").ForeignKey("Id").Cascade.All();
            References(x => x.Sender).Column("SentFrom").ForeignKey("Id").Cascade.All();
        }

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...