entity-framework-core - 是否需要明确设置 entityc Core 6 中不需要属性?
问题描述
我正在尝试将使用实体核心 5 的项目迁移到实体核心 6。
我正在使用 fluent api 来设置配置。
在 net 5 项目中,我不需要设置字段是否允许为空。我正在使用此代码来设置字符串属性的值:
modelBuilder.Entity<Mytable>(entity =>
{
entity.HasKey(e => e.MyPk);
entity.Property(e => e.MyPk)
.HasMaxLength(50)
.IsUnicode(false);
entity.Property(e => e.MyStringProperty)
.HasMaxLength(500)
.IsUnicode(false);
});
这在 Net 5 中运行良好。
所以要迁移到 Net 6,我只想将定义这一切的类复制到 Net 6 的项目中。
但是,当我运行 Net 6 应用程序时,我收到此错误:数据为空。不能对 Null 值调用此方法或属性。
我需要设置 IsRequiered(false) ,在这种情况下它可以工作:
modelBuilder.Entity<Mytable>(entity =>
{
entity.HasKey(e => e.MyPk);
entity.Property(e => e.MyPk)
.HasMaxLength(50)
.IsUnicode(false);
entity.Property(e => e.MyStringProperty)
.IsRequired(false)
.HasMaxLength(500)
.IsUnicode(false);
});
在数据库中,varchar 字段允许为空。
我正在使用数据库方法。
现在在实体核心 6 中是否需要始终设置它不需要?
注意:如果我用实体核心工具 6 搭建数据库,我可以看到结果与 net 5 相同,因此不需要设置该字段为不需要。
然后,我不明白这可能是问题所在。
注意2:我发现了问题。
我有一个项目,其中包含在项目中使用的使用实体核心的 POCO 实体。此项目已启用 .project 文件中的可为空选项。如果我禁用它,它会像往常一样工作。
谢谢。
解决方案
推荐阅读
- php - 如何从 Table1 统计每个月的记录并将其存储在 Table2 中
- google-cloud-composer - 使用 Cloud Composer 访问存储桶时出错
- numpy - 如何在numpy中点子数组?
- node.js - 如何在nodejs中添加多行无痛代码
- sql - 如何在 SQL Server 中合并两行
- ios - 经典蓝牙设备的 iOS 应用程序开发
- python - 另一个模型属性的Django max_length
- output - gnuplot 的反向尾部
- java - 如何转换列表
在Java中没有“”的逗号分隔字符串 - python - 在 Python 中将 20 列聚合为一列的更快方法