如何在导航属性上将IsModified设置为false

时间:2018-09-17 07:29:33

标签: c# asp.net-core entity-framework-core

我有ArticleApplicationUser模型类:

public class ApplicationUser
{
    ...

}

public class Article
{
    ...

    public ApplicationUser CreatedBy { get; set; }
}

我试图通过这种方式将CreatedBy属性设置为false:

base.Entry(entity).Property(x => x.CreatedBy).IsModified = false;

但是我得到这个错误:

  

使用“属性”方法访问实体类型“ ApplicationUser”上的属性“ CreatedBy”,但在模型中将其定义为导航属性。使用“引用”或“集合”方法访问导航属性。

2 个答案:

答案 0 :(得分:3)

如果我理解正确,那么Article实体可能看起来像:

public class Article
{
    public int Id { get; set; }

    public string UserID { get; set; }

    // ...

    [ForeignKey("UserID")]
    public ApplicationUser CreatedBy { get; set; }
}

如错误信息所述,CreatedBy是此处的导航属性。

因此将您的代码更改为

Entry(entity).Reference(x => x.CreatedBy).IsModified = false;

它可能会按预期工作。

答案 1 :(得分:1)

我更改为使用“属性”方法中的“引用”方法来访问CreatedBy

base.Entry(entity).Reference(x => x.CreatedBy).IsModified = false;