Почему HasMany (). WithMany () генерирует неправильную (?) Схему - PullRequest
0 голосов
/ 21 марта 2012

Сначала я сопоставляю код моей модели с плавным API для генерации схемы.Интересной точкой является

public class RoleMapping : EntityTypeConfiguration<Role>
{
    public RoleMapping()
    {
        // ...
        this.HasMany(r => r.Permissions).WithMany();
    }
}

Я бы ожидал таблицу ролей, таблицу Perimssions и промежуточную таблицу.Однако, если я не добавлю свойство навигации Roles, не сделаю класс Permission, я получу только две сгенерированные таблицы:

CREATE TABLE [Roles](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](max) NULL )
GO

CREATE TABLE [Permissions](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Role_Id] [int] NULL)
GO

ALTER TABLE [dbo].[Permissions]  WITH CHECK 
ADD CONSTRAINT [Role_Permissions] FOREIGN KEY([Role_Id])
REFERENCES [dbo].[Roles] ([Id])
GO

ALTER TABLE [dbo].[Permissions] CHECK CONSTRAINT [Role_Permissions]
GO

Почему это так работает?

1 Ответ

0 голосов
/ 22 марта 2012

Ах, моя ошибка.

Чего мне не хватало, добавив сопоставления в конструктор моделей:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.Configurations.Add(new RoleMapping());
    modelBuilder.Configurations.Add(new PermissionMapping());

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