我刚刚更新到实体框架核心3.0,下面的代码不再编译。看起来IPluralizer、ICandidateNamingService和CandidateNamingService已经不复存在了。
有人知道通过添加迁移InitialCreate定制实体生成的新推荐方法是什么吗?
public class CustomDesignTimeServices : IDesignTimeServices
{
public void ConfigureDesignTimeServices(IServiceCollection services)
{
services.AddSingleton<ICandidateNamingService, CustomCandidateNamingService>();
services.AddSingleton<IPluralizer, CustomPluralizer>();
}
}
public class CustomPluralizer : IPluralizer
{
public string Pluralize(string name)
{
return Inflector.Inflector.Pluralize(name) ?? name;
}
public string Singularize(string name)
{
return Inflector.Inflector.Singularize(name) ?? name;
}
}
public class CustomCandidateNamingService : CandidateNamingService
{
public override string GetDependentEndCandidateNavigationPropertyName(IForeignKey foreignKey)
{
if (foreignKey.PrincipalKey.IsPrimaryKey())
return foreignKey.PrincipalEntityType.ShortName();
return base.GetDependentEndCandidateNavigationPropertyName(foreignKey);
}
}
发布于 2022-05-24 09:41:48
我让IPluralizer参考在.NET 6中再次工作,通过
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.9">
<PrivateAssets>all</PrivateAssets>
<!-- Remove IncludeAssets to allow compiling against the assembly -->
<!--<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>-->
</PackageReference>
https://stackoverflow.com/questions/58924138
复制相似问题