Я пытаюсь отобразить эти объекты
Поля таблицы сообщений: 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();
}
Спасибо