首页 > 解决方案 > 是否需要明确设置 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 文件中的可为空选项。如果我禁用它,它会像往常一样工作。

谢谢。

标签: entity-framework-core

解决方案


推荐阅读