C# 实体框架核心-定制脚手架
在实体框架6中,我们可以通过运行C# 实体框架核心-定制脚手架,c#,entity-framework-core,C#,Entity Framework Core,在实体框架6中,我们可以通过运行 Install-Package EntityFramework.CodeTemplates.CSharp 但在实体框架核心中,脚手架系统似乎没有使用T4模板,也没有脚手架可以定制。这似乎都是c类的 有什么方法可以自定义脚手架的输出吗?有一个特殊的、尚未记录的钩子,用于覆盖设计时服务: class Startup { public static void ConfigureDesignTimeServices(IServiceCollection se
Install-Package EntityFramework.CodeTemplates.CSharp
但在实体框架核心中,脚手架系统似乎没有使用T4模板,也没有脚手架可以定制。这似乎都是c类的
有什么方法可以自定义脚手架的输出吗?有一个特殊的、尚未记录的钩子,用于覆盖设计时服务:
class Startup
{
public static void ConfigureDesignTimeServices(IServiceCollection services)
=> services.AddSingleton<EntityTypeWriter, MyEntityTypeWriter>();
}
更新:有关在EF Core 1.0.2+中执行此操作的另一种方法,请参见的答案。在.Net Core 1.1中,覆盖设计时服务的方法是在启动程序集中实现IDesignTimeServices接口。例如:
public class MyDesignTimeServices : IDesignTimeServices
{
public void ConfigureDesignTimeServices(IServiceCollection serviceCollection)
{
serviceCollection.AddSingleton<EntityTypeWriter, MyEntityTypeWriter>();
serviceCollection.AddSingleton<DbContextWriter, MybContextWriter>();
}
}
公共类MyDesignTimeServices:IDesignTimeServices
{
public void配置DesignTimeServices(IServiceCollection服务集合)
{
serviceCollection.AddSingleton();
serviceCollection.AddSingleton();
}
}
请参见好的,我可以在ScaffoldingServiceCollectionExtensions.cs中看到它是如何工作的。我们在EF Core中的目标之一是保持框架的开放性和可扩展性。你实际上是在利用“后门”。我们承诺通过对模板的支持(问题)使这变得更容易。我现在可以使用它,并且是否有任何教程我希望我的所有poco数据库类扩展我的基类。实际上,我想我会提出一个新的问题,这个方法也将在EF Core 1.0.2中启用。在EF Core 2.0.0中,这些类被称为
CSharpDbContextGenerator
和csharpentyTypeGenerator
public class MyDesignTimeServices : IDesignTimeServices
{
public void ConfigureDesignTimeServices(IServiceCollection serviceCollection)
{
serviceCollection.AddSingleton<EntityTypeWriter, MyEntityTypeWriter>();
serviceCollection.AddSingleton<DbContextWriter, MybContextWriter>();
}
}