具有可空引用类型的 .Net Core Fluent API
.Net Core Fluent API with Nullable references types
我似乎无法解决以下问题,并且在网上找不到任何帮助。我是 .Net Core 的新手,也是使用可为 null 的引用类型的新手,但我无法使它们与 EF Core 一起工作。我有一个数据 table,其中包含外键可为空的一对多关系(即关系中可能没有任何项目 - 在本例中并非所有资产都具有资产类型)。曾经工作的流利 API 是
modelBuilder.Entity<Asset>(entity =>
{
entity.HasOne(d => d.AssetType)
.WithMany(p => p.Assets)
.HasForeignKey(d => d.AssetTypeId)
.HasConstraintName("FK_Assets_AssetTypes");}
问题是因为AssetType?可以为空我现在得到
'p' may be null here...warning on p.Assets
并且除了抑制消息并希望它起作用之外似乎找不到解决它的方法,尽管其他多对多关系没有并且需要手动处理,但它似乎可以。 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");
}
我似乎无法解决以下问题,并且在网上找不到任何帮助。我是 .Net Core 的新手,也是使用可为 null 的引用类型的新手,但我无法使它们与 EF Core 一起工作。我有一个数据 table,其中包含外键可为空的一对多关系(即关系中可能没有任何项目 - 在本例中并非所有资产都具有资产类型)。曾经工作的流利 API 是
modelBuilder.Entity<Asset>(entity =>
{
entity.HasOne(d => d.AssetType)
.WithMany(p => p.Assets)
.HasForeignKey(d => d.AssetTypeId)
.HasConstraintName("FK_Assets_AssetTypes");}
问题是因为AssetType?可以为空我现在得到
'p' may be null here...warning on p.Assets
并且除了抑制消息并希望它起作用之外似乎找不到解决它的方法,尽管其他多对多关系没有并且需要手动处理,但它似乎可以。 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");
}