我有一个简单的应用程序与零继承(至少就数据库而言)。我怎么能"告诉"这个实体框架,使它会停止寻找鉴别器列?
我没有访问改变数据库表的结构,但我需要改变数据,我不能这样做,因为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; }
}
你必须放弃那种模式