База данных, созданная EF5, не создает соединительную таблицу при наличии нескольких отношений

У меня есть класс User и Organization. Они выглядят так

public class User
{
        public int UserId { get; set; }
        public string UserName { get; set; }
        public string Email { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public virtual ICollection<Organization> Organizations { get; set; }
}

public class Organization : EntityBase
{
    public string Name { get; set; }
    public string Description { get; set; }
    public virtual ICollection<User> Users { get; set; }
}

И оба наследуются от класса EntityBase, чтобы получить общие поля, такие как идентификатор и созданное/обновленное отслеживание.

public abstract class EntityBase
{
    public int Id { get; set; }
    public DateTime Created { get; set; }
    public virtual User CreatedBy { get; set; }
    public DateTime Updated { get; set; }
    public virtual User UpdatedBy { get; set; }
}

Как указано в свойствах ICollection для обоих, должно быть отношение «многие ко многим». Однако, когда моя база данных генерируется автоматически, я получаю неверные внешние ключи, добавленные в мои таблицы Неверное сопоставление таблиц Organization и User

Если я изменю CreatedBy и UpdatedBy на строки вместо свойств пользователя, я получу таблицу соединений, что я и искал. Правильное создание базы данных

Это связано с тем, что Entity Framework просто запутался, и мне нужно предоставить конфигурацию «многие ко многим» при использовании быстрых сопоставлений, или я сделал что-то не так?


person pnewhook    schedule 13.11.2012    source источник


Ответы (1)


Если у вас есть несколько отношений, вам нужно настроить их вручную с помощью Fluent API или с помощью атрибутов,

Примечание: Если у вас есть несколько отношений между одними и теми же типами (например, предположим, что вы определяете классы Person и Book, где класс Person содержит свойства навигации ReviewedBooks и AuthoredBooks, а класс Book содержит свойства навигации Author и Reviewer), вам необходимо вручную настроить отношения с помощью аннотаций данных или API Fluent

Вот статья от Microsoft.

person Jayantha Lal Sirisena    schedule 14.11.2012