我在使用实体框架代码优先方法时遇到问题:
public class Entity
{
[Key]
public int Id { get; set; }
public string A { get; set; }
}
public class Context : DbContext
{
public DbSet<Entity> Entities { get; set; }
}
假设这是实体框架的设置。有用。我可以创建一个实体实例并将其添加到实体集。现在我的问题是:我想创建一个 Entity 的子类,它是传递给某个视图的 ViewModel:
public class EntityViewModel : Entity
{
public String ViewModelProperty { get; set; }
}
然后,当我从模型绑定器中取回生成的对象时,我应该能够做到这一点:
public void Action(EntityViewModel vm)
{
db.Entities.Add(vm); // This should work since EntityViewModel inherits Entity
db.SaveChanges();
}
在这里,我得到以下异常:
找不到 EntityType 'EntityViewModel' 的映射和元数据信息。
我已经尝试将 [NotMapped] 属性添加到 EntityViewModel,这没有帮助。如果我手动将 EntityViewModel 属性提取到一个新的 Entity 对象中,它可以工作:
public void Action(EntityViewModel vm)
{
var entity = new Entity
{
Id = vm.Id,
A = vm.A
};
db.Entities.Add(entity); // This works!!!
db.SaveChanges();
}
为什么 EntityFramework 会这样?有没有办法告诉它忽略 EntityViewModel 对象?
提前致谢。