У меня есть базовый класс сущности MyCompany.Core.Model.User
, который должен использоваться для общих свойств объекта User
:
public class User
{
public string Username { get; set; }
public string Usercode { get; set; }
}
У меня также есть базовый класс сопоставления MyCompany.Core.Model.UserMap
, чтобы настроить первые сопоставления кода для базового класса User
:
public class UserMap<TUser> : EntityMapBase<TUser>
where TUser : User
{
public UserMap()
{
// Primary Key
this.HasKey(t => t.Usercode);
// Table & Column Mappings
this.ToTable("Users");
this.Property(t => t.Username).HasColumnName("Username");
this.Property(t => t.Usercode).HasColumnName("UserCode");
}
}
В отдельной сборке у меня есть производный класс MyCompany.Model.User
, который наследуется от базового класса User
и расширяет его с помощью некоторых дополнительных свойств:
public class User : Core.User
{
public string Surname { get; set; }
}
Кроме того, у меня есть производный класс отображения MyCompany.Model.UserMap
, чтобы предоставить дополнительную конфигурацию для дополнительных свойств:
public class UserMap : Core.UserMap<User>
{
public UserMap()
{
this.Property(t => t.Surname).HasColumnName("Surname");
}
}
Однако при добавлении MyCompany.Model.User
в контекст и регистрации MyCompany.Model.UserMap
я получаю следующую ошибку:
Тип "MyCompany.Model.User" и тип "MyCompany.Core.Model.User" имеют одинаковое простое имя "Пользователь" и поэтому не могут использоваться в той же модели. Все типы в данной модели должны иметь уникальные простые имена. Используйте "NotMappedAttribute" или вызовите Ignore в Code First fluent API, чтобы явно исключить свойство или тип из модели.
Эта ссылка указывает, что вы не можете иметь одно и то же "простое имя" в модели дважды.
Почему базовый класс "простое имя" регистрируется в модели, и есть ли способ обойти его для реализации такого рода наследования объектов?
Я подозреваю, что простым решением было бы переименовать производный класс; однако я бы предпочел избежать этого, так как может быть много образований в нескольких контекстах.
Примечание. Использование Entity Framework 6.0.0-rc1 (preerelease)