Entity Framework6 2 * многие ко многим для себя - PullRequest
0 голосов
/ 06 декабря 2018

Использование кода в первую очередь с Entity Framework 6.

У меня есть такая сущность:

public class LineSection
{
    public int Id { get; set; }
    public List<LineSection> Next { get; set; }
    public List<LineSection> Previous { get; set; }
}

Я добавляю миграцию, просто чтобы посмотреть, как база данных будет:

        CreateTable(
            "dbo.LineSectionLineSections",
            c => new
                {
                    LineSection_Id = c.Int(nullable: false),
                    LineSection_Id1 = c.Int(nullable: false),
                })
            .PrimaryKey(t => new { t.LineSection_Id, t.LineSection_Id1 })
            .ForeignKey("dbo.LineSections", t => t.LineSection_Id)
            .ForeignKey("dbo.LineSections", t => t.LineSection_Id1)
            .Index(t => t.LineSection_Id)
            .Index(t => t.LineSection_Id1);

Мне не нравятся имена по умолчанию.Могу ли я изменить имя таблицы (LineSectionLineSections) и два внешних ключа (LineSection_Id и LineSection_Id1).Используя модель-строитель, атрибуты данных или какой-то другой способ?

1 Ответ

0 голосов
/ 06 декабря 2018

Конфигурирование отношения «многие ко многим» с таблицей неявного соединения (не имеет значения, является ли t «я» или нет) выполняется с Map свободным API.Вы можете использовать ToTable для указания имени таблицы и MapLeftKey / MapRightKey для указания имен соответствующих столбцов (слева - конфигурируемая сущность, справа - другой конец отношения).

Итакв вашем случае это будет примерно так:

modelBuilder.Entity<LineSection>()
   .HasMany(e => e.Next)
   .WithMany(e => e.Previous)
   .Map(m => m.MapLeftKey("PrevId")
          .MapRightKey("NextId")
          .ToTable("LineSectionLinks")
   );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...