使实体框架忽略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; }
}

EF只在DbContext上使用表每层次继承时查找Discriminator列。一个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; }
}

你必须放弃那种模式

最新更新