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,并且逻辑没有真正更新