У меня есть класс 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 для обоих, должно быть отношение «многие ко многим». Однако, когда моя база данных генерируется автоматически, я получаю неверные внешние ключи, добавленные в мои таблицы
Если я изменю CreatedBy и UpdatedBy на строки вместо свойств пользователя, я получу таблицу соединений, что я и искал.
Это связано с тем, что Entity Framework просто запутался, и мне нужно предоставить конфигурацию «многие ко многим» при использовании быстрых сопоставлений, или я сделал что-то не так?