1

我正在尝试使用 DbContext 方法仅对已更改的字段执行更新,Entry()StackOverflow 上所述:

当我在我的NameStartDate字段上执行此操作时,一切都运行良好,我的 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 和其他一些。没有什么邪恶的东西可以干扰我不会想到的。

4

1 回答 1

1

Company似乎不是一个复杂的属性,而是一个导航属性,因此您无法使用虚线属性路径访问它。您需要获取相关实体的条目,然后将属性设置为相应修改。

于 2013-01-10T16:13:44.880 回答