我使用的是EF Core 5,在我的DBContext SaveChanges((中有以下内容:
if (entityEntry.Metadata.Name == "ArticleBankAggregate.ArticleTag" && entityEntry.Metadata.DefiningNavigationName != "Tags")
{
entityEntry.Property("UpdatedDate").CurrentValue = DateTime.Now;
if (entityEntry.State == EntityState.Added)
{
entityEntry.Property("CreatedDate").CurrentValue = DateTime.Now;
}
}
更新阴影属性。
我正在尝试升级到EF Core 6,我得到了以下内容:
CS0618:'IReadOnlyEntityType。DefiningNavigationName"已过时:"具有定义导航的实体类型已被共享类型实体类型所取代">
我找不到任何例子,也不知道如何将其更改为使用共享类型实体。
共享实体类型是使用公共CLR类型(类(的实体类型,由实体类型名称标识(因为类型不够(。
拥有的实体类型现在被实现为共享类型。所属实体类型的名称由所有者类型的名称+导航属性+类型名称组成。例如类似CCD_ 1的东西。
因此,调整上述代码的一种方法是检查感兴趣实体的名称,然后直接测试它。另一种更接近以前的方法是检查CLR类型,如果它是被拥有的,则检查从所有者到被拥有的导航属性名称(相当于"定义导航名称"(,这可以通过FindOwnership().PrincipalToDependent.Name
获得,例如类似的东西
if (entityEntry.Metadata.ClrType == typeof(ArticleTag)
&& entityEntry.Metadata.FindOwnership()?.PrincipalToDependent?.Name != "Tags")