【发布时间】:2021-05-08 13:12:31
【问题描述】:
我刚刚测试了将一个项目从 .NET Core 3.1 升级到 .NET 5。但是在使用 DbContext 时遇到了以下错误:
System.InvalidOperationException:导航“MyDatabaseModel.SomeProperty”必须在“OnModelCreating”中配置为目标共享类型实体类型的显式名称,或通过调用“EntityTypeBuilder.Ignore”排除。
问题是我不明白这条错误消息试图告诉我什么。它抱怨的属性是这样定义的:
[Column("some_property", TypeName = "jsonb")]
public JsonDocument _someProperty { get; set; }
public Dictionary<string, object> SomeProperty
{
get
{
// the JsonDocument is converted to the Dictionary here
}
}
数据作为 JSONB 列存储在数据库中。有一些自定义代码可以将其转换为此处预期的应用程序 Dictionary<string, object> 类型。
但这不是错误消息声称的导航属性,它不链接到任何其他数据库实体。我不明白“目标共享类型实体类型”应该是什么。搜索这个特定的错误消息也没有提供任何线索,我找不到其他人遇到这个问题,只有在.NET中定义了错误字符串。
EF Core 究竟想在这里告诉我什么,它抱怨的实际问题是什么?我将如何应用它建议的解决方案,在 OnModelCreating 中配置它还是忽略它?
【问题讨论】:
标签: c# .net-core entity-framework-core .net-5