C# 父抽象对象的实体框架更改状态

C# 父抽象对象的实体框架更改状态,c#,entity-framework-6,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 v

例如,我在两个表之间有一个继承关系,父表是抽象的

问题是更改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();

我有一个触发器,当数据库中的表车辆上发生更新操作时,由于表车辆未更新,所以触发器从未执行。

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

实际上,EF代码首先使用一个名为“Discriminator”的特殊字段将继承类关系作为db上的一个表来管理


此时,就您在OP和随后的评论中所说的内容而言,您应该将触发器放在带有“鉴别器”字段的表格上,而不是放在EF数据层不支持的最终存在的车辆表格中

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

context.Entry(x).Property(x => x.V).IsModified = true;

你能发布你的触发器的内容吗?问题不是触发器的内容,问题是触发器没有执行,因为父表没有更新。这很奇怪。如果这是继承,那么
Vehicle
Car
的表是相同的。在数据库中,它们是两个表,而在DbContext中,父表是抽象的,所以我们只与子表对话。我是问题所在,它现在工作正常,我仍然在寻找为什么不工作,现在它工作正常。谢谢:)代码中没有错误,你自己试试看@Ciro CorvinoPerhaps我遗漏了什么☺谢谢,这将是更好的解决方案:)