我有一个简单的应用程序,没有继承(至少就数据库而言)。我怎样才能“告诉”这个实体框架,以便它停止寻找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; }
}
答案 0 :(得分:0)
如果在DbContext上使用每个层次结构表继承,EF将只查找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; }
}
你必须放弃这种模式。