Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新记录-实体框架时ASP.NET排除属性_C#_Asp.net_Entity Framework - Fatal编程技术网

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

C# 更新记录-实体框架时ASP.NET排除属性,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,我想在不更改AuthorId的情况下更新横幅,并且我的DTO不包括AuthorId,因此在我提交时该字段的值为空 我关注过这个帖子 我的代码: public void UpdateBanner(Banner banner) { _context.Entry(banner).State = EntityState.Modified; _context.Entry(banner).Property(x => x.AuthorId).IsModified = false;

我想在不更改
AuthorId
的情况下更新横幅,并且我的DTO不包括
AuthorId
,因此在我提交时该字段的值为空

我关注过这个帖子

我的代码:

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字段是必需的


请帮忙

错误是不言自明的

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

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


希望这有帮助。

错误是不言自明的

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

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


希望这有帮助。

t感谢您的回答,添加了AuthorId(不是主键),但我希望保留旧值。因此,我不想在bannerDTO(更新时提交的对象)中包含AuthorId,这就是AuthorId为null的原因。@Kaeszt-如果它标记为
not null
,请检查该字段的数据库。我知道它是必需的,但我需要的是保留它的当前值,而不是更新新值。在这种情况下,您必须按原样传递它。因为一个必填字段总是需要一个值,即使它是相同的值。谢谢你的帮助,但我仍然需要一个更好的解决方案,因为这将+1查询以获得authorId,并且逻辑没有真正更新感谢你的回答,authorId(不是主键)被添加了,但我想要的是保留旧值。因此,我不想在bannerDTO(更新时提交的对象)中包含AuthorId,这就是AuthorId为null的原因。@Kaeszt-如果它标记为
not null
,请检查该字段的数据库。我知道它是必需的,但我需要的是保留它的当前值,而不是更新新值。在这种情况下,您必须按原样传递它。因为一个必填字段总是需要一个值,即使它是相同的值。谢谢你的帮助,但我仍然需要一个更好的解决方案,因为这将+1查询以获得authorId,并且逻辑没有真正更新