Я пытаюсь создать свою первую миграцию с использованием Entity Framework 7 с первой разработкой кода, и я получаю следующую ошибку:
Свойство «Электронная почта» не может быть добавлено к типу сущности «UserDTO», поскольку свойство навигации с таким же именем уже существует в типе сущности «UserDTO».
Моя среда: 1) Visual Studio 2015 2) Entity Framework v7.0.0-rc1-final 3) Первая разработка кода 4) Использование свободного API, а не аннотаций данных
Я не могу понять, в чем основная причина проблемы, но у меня есть несколько идей. Предполагается, что мой класс RoleDTO использует свой адрес электронной почты в качестве своего PK, а также имеет коллекцию объектов RoleDTO в качестве свойства.
Ниже приведен единственный класс, который у меня сейчас наследуется от DbContext. Я прокомментировал другой объект, который должен попытаться уменьшить проблему.
class StorageContext : DbContext
{
public DbSet<UserDTO> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("MySQLServerConnectionString")
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<UserDTO>().HasKey(entity => entity.Email);
//modelBuilder.Entity<UserDTO>().HasMany(entity => entity.Roles);
}
}
А вот и класс UserDTO. Может ли кто-нибудь увидеть, что вызывает ошибку, когда я пытаюсь выполнить миграцию?
internal class UserDTO
{
public EmailAddress Email { get; private set; }
public string FullName { get; private set; }
public string UserName { get; private set; }
public virtual ICollection<string> Roles { get; private set; }
// more below here like a constructor and some basic methods
Если я переключу ключ для UserDTO на простую строку вместо сложного объекта EmailAddress, похоже, что он обходит эту ошибку, и я получаю другую, не менее интересную:
Свойство «Роли» для типа объекта «Microsoft.SRE.NavisionOnline.ConfigurationAutomation.DAL.SQLEntities.UserDTO» не было добавлено в модель или проигнорировано.