.Net Core Razor 页面使用 EF Core CRUD 编辑模型排除不可为 null 的字段而不会导致错误

.Net Core Razor pages using EF Core CRUD edit model exclude non nullable fields without causing error

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

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

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

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

// 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;

提示,直接在视图页面中使用域模型不是一个好主意,更好的方法是为视图页面创建视图模型 class,然后将它们映射到域 classes在将它们添加到 dbcontext 之前.. 在 mvc

中阅读有关 AutoMapper 工具和 viewModels 的更多信息