首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实体框架核心-定制脚手架

实体框架核心-定制脚手架
EN

Stack Overflow用户
提问于 2016-06-07 12:25:55
回答 2查看 5K关注 0票数 11

在EntityFramework6中,我们可以通过运行

代码语言:javascript
运行
复制
Install-Package EntityFramework.CodeTemplates.CSharp

但是在实体框架核心中,脚手架系统似乎不使用T4模板,也不像是可以定制脚手架。它似乎都在c#类中。

https://github.com/aspnet/EntityFramework/blob/a508f37cf5a0246e9b92d05429153c3d817ad5ec/src/Microsoft.EntityFrameworkCore.Tools.Core/Scaffolding/Internal/EntityTypeWriter.cs

有任何方法来定制来自脚手架的输出吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-07 15:36:51

有一个特殊的,但即将文档化的钩子来覆盖设计时服务:

代码语言:javascript
运行
复制
class Startup
{
    public static void ConfigureDesignTimeServices(IServiceCollection services)
        => services.AddSingleton<EntityTypeWriter, MyEntityTypeWriter>();
}

然后实现您的自定义生成器。

代码语言:javascript
运行
复制
class MyEntityTypeWriter : EntityTypeWriter
{
    public EntityTypeWriter(CSharpUtilities cSharpUtilities)
        : base(cSharpUtilities)
    {
    }

    // TODO: Override with custom implementation
}

更新:在EF核心1.0.2+中看到了Yehuda Goldenberg的另一种方法。

票数 7
EN

Stack Overflow用户

发布于 2016-11-24 04:48:08

在.Net核心1.1中,覆盖设计时服务的方法是在启动程序集中实现IDesignTimeServices接口。例如:

代码语言:javascript
运行
复制
public class MyDesignTimeServices : IDesignTimeServices
{
    public void ConfigureDesignTimeServices(IServiceCollection serviceCollection)
    {
        serviceCollection.AddSingleton<EntityTypeWriter, MyEntityTypeWriter>();
        serviceCollection.AddSingleton<DbContextWriter, MybContextWriter>();

    }
}

请参阅https://github.com/aspnet/EntityFramework/issues/5617

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37679367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档