Сделать Entity Framework игнорировать столбец дискриминатора

101
14

У меня есть простое приложение с нулевым наследованием (по крайней мере, что касается базы данных). Как я могу "рассказать" об этом в Entity Framework, чтобы она перестала искать столбец Discriminator?

У меня нет доступа к изменению структуры таблиц базы данных, но мне нужно изменить данные, и я не могу этого сделать, потому что EF продолжает пытаться работать с несуществующим столбцом Discriminator и сбой в результате.

Изменение: Добавлен код

public class DatabaseContext : DbContext {
public DbSet<User> Users { get; set; }

protected override void OnModelCreating(DbModelBuilder modelBuilder) {
modelBuilder.Entity<User>().ToTable("Users");
}
}

public class UserRepository {
public int Insert(User entity) {
using (var db = new DatabaseContext()) {
var table = db.Users;
table.Add(entity);
return db.SaveChanges();
}
}
}

public class User : IEntity {
public int Id { get; set; }

public String Username { get; set; }

public String Password { get; set; }

public String FullName { get; set; }

public String Email { get; set; }
}

public interface IEntity {
int Id { get; set; }
}

спросил(а) 2013-03-22T20:24:00+04:00 7 лет, 7 месяцев назад
1
Решение
71

EF будет искать столбец Discriminator только в том случае, если вы используете наследование по иерархии на основе DbContext. Пример класса TPH DbContext:

public abstract class Animal 
{
public int AnimalId { get; set; }
public string Name { get; set; }
}

public class Cat : Animal
{
public string Race { get; set; }
}

public class Dog : Animal
{
public string BarkStyle { get; set; }
}

public class InheritanceMappingContext : DbContext
{
public DbSet<Animal> Animal { get; set; }
}

Вы должны отказаться от этой картины.

ответил(а) 2013-03-22T20:39:00+04:00 7 лет, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема