.Net Core Fluent API with Nullable 引用类型



我似乎无法解决以下问题,也无法在网上找到任何有用的东西。我是 .Net Core 的新手,也是使用可为空的引用类型的新手,不知何故我无法使它们与 EF Core 一起使用。我有一个包含一对多关系的数据表,其中外键可为空(即关系中可能没有项目 - 在此示例中,并非所有资产都具有资产类型(。曾经工作的流畅 API 是

modelBuilder.Entity<Asset>(entity =>
{
entity.HasOne(d => d.AssetType)
.WithMany(p => p.Assets)
.HasForeignKey(d => d.AssetTypeId)
.HasConstraintName("FK_Assets_AssetTypes");}

问题是因为资产类型? 可为空 我现在得到一个

"p"在这里可能为空...p.资产警告

并且除了抑制消息并希望它有效之外,似乎找不到解决方法,尽管其他多对多关系没有并且需要手动处理,但似乎无法找到解决方法。EFCore 在多对多上似乎很原始,除非我做错了。

我尝试从 AssetType 实体开始反转关系,但我得到了类似的结果。

我也尝试过使用

.WithMany() 

但这会删除现有的导航属性,因此它不起作用。

任何帮助将不胜感激,因为我显然错过了一些东西。

我在配置映射表达式时遇到了类似的情况。最后,我决定将警告静音,因为编写的表达式永远不会执行。它仅由 EF 解析以执行其内部魔术。在您的情况下,它会是这样的(无需处理#pragma warning disable

modelBuilder.Entity<Asset>(entity =>
{
entity.HasOne(d => d.AssetType)
.WithMany(p => p.Assets!)
// ^ this '!' tells to compiler to stop bothering you about this
// null dereference because you are sure the code is right
.HasForeignKey(d => d.AssetTypeId)
.HasConstraintName("FK_Assets_AssetTypes");
}

最新更新