首页 > 解决方案 > .Net Core Razor 页面使用 EF Core CRUD 编辑模型排除不可为空的字段而不会导致错误

问题描述

我正在使用 .net core 2.1 剃须刀页面。我有 CRUD 页面,我只显示模型中的一些字段。我没有显示的字段获取提供给创建模型的默认值。

我的编辑模型有问题。我的设置是我只想能够编辑模型上的某些字段。当我不包含映射到数据库中不可为空的字段的字段时,即使在创建记录时这些字段已被填充,我也会收到错误消息。

我该如何处理?我是否必须自定义编辑模型以指定要绑定到编辑表单的字段?指向文档或示例的指针会有所帮助。

标签: asp.net-corerazor-pagesef-core-2.1

解决方案


您是否附加修改后的实体对象?如果是这样,它会将所有属性标记为已修改。使用 将相关属性EntityEntry的属性设置为,以便 EF 不会尝试在存储中更新它们的值。IsModifiedfalse

// gets EntityEntry and begins tracking if not currently tracked
var entry = dbContext.Entry( yourEntity );
// set as modified
entry.State = EntityState.Modified;
// for each property you don't want updated in store:
entry.Property( e => e.PropertyName )
    .IsModified = false;

推荐阅读