更新记录时ASP.NET排除属性 - 实体框架

时间:2015-12-02 09:37:20

标签: c# asp.net entity-framework

我想更新横幅而不更改AuthorId,而我的DTO不包含AuthorId,因此当我提交时,该字段的值为空。

我已关注此帖Exclude Property on Update in Entity Framework

我的代码:

public void UpdateBanner(Banner banner)
{
    _context.Entry(banner).State = EntityState.Modified;
    _context.Entry(banner).Property(x => x.AuthorId).IsModified = false;

    try
    {
        _context.SaveChanges();
    }
    catch (DbEntityValidationException e)
    {
        foreach (var eve in e.EntityValidationErrors)
        {
            Debug.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
            eve.Entry.Entity.GetType().Name, eve.Entry.State);

            foreach (var ve in eve.ValidationErrors)
            {
                Debug.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                ve.PropertyName, ve.ErrorMessage);
            }
        }

        throw;
    }         
}

我收到了这个错误:

  

AuthorId字段是必需的。

请帮忙!

1 个答案:

答案 0 :(得分:0)

错误是不言自明的。

AuthorId字段是必需的。在我看来,通过查看您发布的链接作为参考,您仍然使用主键字段将其标记为false以进行修改属性,而在链接中,使用了不是主键的字段。

因此,您可能希望检查字段中的差异,如果是主键,那么它将需要一个值。

希望这有帮助。