Код EF 4.1 First Foreign Key добавляет дополнительный столбец - PullRequest
5 голосов
/ 27 июня 2011

У меня есть следующие две сущности (среди многих, но они вызывают у меня проблему)

public class StartPoint
{
    public int StartPointId { get; set; }
    public string Description { get; set; }
    public int StartPointNumber { get; set; }    
    public int StartAreaId { get; set; }
    public StartArea StartArea { get; set; }
}    

и

public class StartArea
{
    public int StartAreaId { get; set; }
    public string Description { get; set; }
    public ICollection<StartPoint> StartPoints { get; set; }
}

При разрешении EF создать мою базу данных он жаловался, что янеобходимо отключить каскадное удаление из-за нескольких путей, которые я сделал следующим образом.

        modelBuilder.Entity<StartPoint>()
            .HasRequired(x => x.StartArea)
            .WithMany()
            .HasForeignKey(x => x.StartAreaId)
            .WillCascadeOnDelete(false);

Проблема в том, что при создании базы данных я получаю два внешних ключа, один называется StartAreaId, как я быожидать, а другой - StartArea_StartAreaId.Используется только StartAreaId.Почему и как мне избавиться от StartArea_StartAreaId.Если я удаляю HasForeignKey в контексте и удаляю StartAreaId из сущности, я получаю несколько столбцов StartArea_StartAreaId, как в StartArea_StartAreaId и StartArea_StartAreaId1.Что мне нужно сделать, чтобы это не произошло?Я просто хочу, чтобы StartAreaId был моим внешним ключом.

1 Ответ

3 голосов
/ 27 июня 2011

Проблема пуста WithMany:

    modelBuilder.Entity<StartPoint>()
        .HasRequired(x => x.StartArea)
        .WithMany(y => y.StartPoints)
        .HasForeignKey(x => x.StartAreaId)
        .WillCascadeOnDelete(false);
...