EF Code First Несколько объектов в одной таблице

Меня интересует, как я могу сопоставить два объекта с одной и той же таблицей, используя сначала код. Вот пример:

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"); });
    }

Также имейте в виду, что я не пытаюсь добиться «разбиения таблиц». Я не хочу, чтобы моя таблица была разделена на две сущности, я хочу, чтобы все столбцы были нулевыми, кроме одного с первичным ключом, и позволять различным приложениям/веб-сервисам/веб-порталам заполнять столько данных, сколько им было предоставлено доступ для.

Спасибо за все советы:)

5
задан Admir Tuzović 3 May 2012 в 18:52
поделиться