实体框架改变父抽象对象的状态

时间:2016-07-12 14:01:06

标签: c# entity-framework-6

我有两个表之间的继承关系,父是抽象的。

问题是更改Car实例的状态不会影响父表。

public abstract class Vehicle
{
    public int Version { get; set; }
}

public class Car : Vehicle
{
    public string Model { get; set; }
}

Vehicle x = context.Vehicles.FirstOrDefault();
x.Model = "new value";
context.Entry(x).State = EntityState.Modified;
context.SaveChanges();

我在数据库上的表Vehicle上发生更新操作时会发生触发器,并且由于表Vehicle未更新,因此永远不会执行触发器。

2 个答案:

答案 0 :(得分:1)

实际上问题消失了,我仍然不知道它为什么存在,为什么会消失,但如果它再次存在,解决方案将是:

scope :by_featured_level, -> {
      select("venues.*, (random() * 9 + 1) AS rdn").order('featured_level DESC, rdn') }

答案 1 :(得分:0)

好的,我看了一下这篇有趣的文章

http://weblogs.asp.net/manavi/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-1-table-per-hierarchy-tph

实际上,EF Code First将继承类关系作为一个单独的表管理,并使用一个名为“Discriminator”的特殊字段。

此时,关于你在OP中所说的内容以及所遵循的注释中,你应该将触发器放在带有“discriminator”字段的表中,而不是放在最终存在的Vehicle表中由EF数据层支持。