Меня интересует, как я могу сопоставить два объекта с одной и той же таблицей, используя сначала код. Вот пример:
public class User
{
[Key]
public int UserId { get; set; }
public string Name { get; set; }
public byte Age { get; set; }
public bool Active { get; set; }
public DateTime Created { get; set; }
}
public class UserViewModel
{
[Key]
public int UserId { get; set; }
public string Name { get; set; }
public byte Age { get; set; }
}
По сути, я сыт по горло созданием репозиториев. Я хочу сопоставить все возможные модели для портала конфигурации, пользовательского портала, других сервисов в построителе моделей и просто использовать DbContext для всего. Я хочу установить класс пользователя как вершину иерархии и класс, который создает базу данных, в то время как все остальные модели должны быть просто для различных приложений.
Я не хочу использовать automapper. Я также проделал изрядное количество ручного кодирования, что только напрасно тратит мое время, и каждая отдельная модификация требует, чтобы я возвращался в репозиторий и перекодировал -, что меня раздражает.
Я пытался использовать это в построителе моделей, но он предупреждает меня о том, что иерархия недействительна.:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().Map(p => { p.ToTable("Users"); });
modelBuilder.Entity<UserViewModel>().Map(p => { p.ToTable("Users"); });
}
Также имейте в виду, что я не пытаюсь добиться «разбиения таблиц». Я не хочу, чтобы моя таблица была разделена на две сущности, я хочу, чтобы все столбцы были нулевыми, кроме одного с первичным ключом, и позволять различным приложениям/веб-сервисам/веб-порталам заполнять столько данных, сколько им было предоставлено доступ для.
Спасибо за все советы:)