我正在尝试使用 DbContext 方法仅对已更改的字段执行更新,如Entry()
StackOverflow 上所述:
当我在我的Name
和StartDate
字段上执行此操作时,一切都运行良好,我的 SQL UPDATE 语句在更新过程中仅包含 Name 和 StartDate,而不是我的实体的每个字段,但是当我现在尝试更新子对象的属性时当Company.TradingName
我收到此异常时:
“属性路径 'Company.TradingName' 中的属性 'Company' 不是类型 'Franchise' 的复杂属性。属性路径必须由除最终属性之外的所有复杂属性组成。”
我的代码只是像这样遍历字段 ( new[] {"Name", "StartDate", "Company.TradingName"}
)的字符串数组(item
我的特许经营实体在哪里我的属性属于):
foreach (var propertyName in changedPropertyNames)
{
_context.Entry(item).Property(propertyName).IsModified = true;
}
有任何想法吗?更新复杂属性应根据此处EF 文档的“获取和设置复杂属性的当前值或原始值”部分中的文档进行。
请求的模型(由 EF5 生成):
public partial class Franchise
{
public System.Guid Id { get; set; }
public string Name { get; set; }
public System.DateTime StartDate { get; set; }
public virtual Company Company { get; set; }
}
该Company
模型也非常简单,只有公共字符串 Name、TradingName 和其他一些。没有什么邪恶的东西可以干扰我不会想到的。