C# EF core 3.1+柚子脚手架DbContext阻止视图代码生成

C# EF core 3.1+柚子脚手架DbContext阻止视图代码生成,c#,entity-framework,entity-framework-core,pomelo-entityframeworkcore-mysql,C#,Entity Framework,Entity Framework Core,Pomelo Entityframeworkcore Mysql,我最近已经从EF core 3.0升级到3.1.1,以及Pomelo适配器和工具。 但是,在更新之后,Scaffold DbContext命令现在也会为所有视图生成代码 Scaffold-DbContext -Connection name=SystemDatabase -Provider Pomelo.EntityFrameworkCore.MySql -Force -Context MyDbContext -Project Test.Data 我希望生成的DbContext与更新之前一样,

我最近已经从EF core 3.0升级到3.1.1,以及Pomelo适配器和工具。 但是,在更新之后,Scaffold DbContext命令现在也会为所有视图生成代码

Scaffold-DbContext -Connection name=SystemDatabase -Provider Pomelo.EntityFrameworkCore.MySql -Force -Context MyDbContext -Project Test.Data
我希望生成的DbContext与更新之前一样,在经过全面测试之前,没有视图。
如何禁用此新的视图生成功能?

目前,此功能未在EF Core中实现。然而,这是一个很好的例子

1一般解决方案 实现所需功能的唯一官方方法是使用-t命令行参数或-Tables,具体取决于要构建的每个表的工具,从而忽略所有视图:

1.1 dotnet ef脚手架 dotnet ef dbcontext scaffold Server=localdb\mssqllocaldb;数据库=博客;Trusted_Connection=True;Microsoft.EntityFrameworkCore.SqlServer-o Models-t Blog-t Post-context dir context-c BlogContext-context namespace New.namespace

1.2背景 Scaffold DbContext Server=localdb\mssqllocaldb;数据库=博客;Trusted_Connection=True;Microsoft.EntityFrameworkCore.SqlServer-OutputDir模型-表日志,Post-ContextDir上下文-上下文BlogContext-ContextNamespace New.Namespace

2特定于提供商的解决方案 您还可以从MySqlDatabaseModelFactory派生您自己的自定义脚手架,并自动提供数据库的所有表,因此您不必逐个指定它们:

使用System.Collections.Generic; 使用系统诊断; 使用Microsoft.EntityFrameworkCore; 使用Microsoft.EntityFrameworkCore.Design; 使用Microsoft.EntityFrameworkCore.Diagnostics; 使用Microsoft.EntityFrameworkCore.Scaffolding; 使用Microsoft.EntityFrameworkCore.Scaffolding.Metadata; 使用Microsoft.Extensions.DependencyInjection; 使用MySql.Data.MySqlClient; 使用Pomelo.EntityFrameworkCore.MySql.Infrastructure.Internal; 使用Pomelo.EntityFrameworkCore.MySql.Scaffolding.Internal; pragma警告禁用EF1001 命名空间IssueConsoleTemplate { 公共类CustomMySqlDesignTimeServices:IDesignTimeServices { public void配置DesignTimeServicesIServiceCollection服务集合 =>服务集合 .AddSingleton; } 公共类CustomMySqlDatabaseModelFactory:MySqlDatabaseModelFactory { 公共CustomMySqlDatabaseModelFactory IDiagnostics日志记录器, IMySqlOptions选项 :baselogger,选项 { } 公共覆盖数据库模型创建 字符串连接字符串, DatabaseModelFactoryOptions选项 { //调试器。启动; var tables=新的HashSet; 使用var connection=new MySqlConnectionconnectionString { 连接。打开; 使用var命令=connection.CreateCommand { command.CommandText=@SELECT`TABLE\u NAME` 来自'INFORMATION\u SCHEMA`.`表` 其中,`TABLE_SCHEMA`=模式,`TABLE_TYPE`='BASE TABLE';; 使用var dataReader=command.ExecuteReader { 而dataReader.Read { tables.AdddataReader.GetStringTABLE_名称; } } } } 返回基地。创建 连接字符串, 新的DatabaseModelFactoryOptions表; } } 内部静态类程序 { 专用静态空干管 { } } } 3使用连接字符串选项的Pomelo 3.2.0+解决方案 我们刚刚在GitHub存储库中为该功能添加了和

它将是3.2.0版本的一部分,也将在大约24小时内从我们的网站上提供

它引入了一个Pomelo和Scaffold特定的连接字符串选项Scaffold:Views=off,可以将其设置为命令行的一部分:

dotnet ef dbcontext scaffold "server=127.0.0.1; uid=root; pwd=; database=So62830251; Scaffold:Views=off" Pomelo.EntityFrameworkCore.MySql -c Context

目前,该功能未在EF Core中实现。然而,这是一个很好的例子

1一般解决方案 实现所需功能的唯一官方方法是使用-t命令行参数或-Tables,具体取决于要构建的每个表的工具,从而忽略所有视图:

1.1 dotnet ef脚手架 dotnet ef dbcontext scaffold Server=localdb\mssqllocaldb;数据库=博客;Trusted_Connection=True;Microsoft.EntityFrameworkCore.SqlServer-o Models-t Blog-t Post-context dir context-c BlogContext-context namespace New.namespace

1.2背景 Scaffold DbContext Server=localdb\mssqllocaldb;数据库=博客;Trusted_Connection=True;Microsoft.EntityFrameworkCore.SqlServer-OutputDir模型-表日志,Post-ContextDir上下文-上下文BlogContext-ContextNamespace New.Namespace

2特定于提供商的解决方案

您还可以从MySqlDatabaseModelFactory派生您自己的自定义脚手架,并自动提供数据库的所有表,因此您不必逐个指定它们:

使用System.Collections.Generic; 使用系统诊断; 使用Microsoft.EntityFrameworkCore; 使用Microsoft.EntityFrameworkCore.Design; 使用Microsoft.EntityFrameworkCore.Diagnostics; 使用Microsoft.EntityFrameworkCore.Scaffolding; 使用Microsoft.EntityFrameworkCore.Scaffolding.Metadata; 使用Microsoft.Extensions.DependencyInjection; 使用MySql.Data.MySqlClient; 使用Pomelo.EntityFrameworkCore.MySql.Infrastructure.Internal; 使用Pomelo.EntityFrameworkCore.MySql.Scaffolding.Internal; pragma警告禁用EF1001 命名空间IssueConsoleTemplate { 公共类CustomMySqlDesignTimeServices:IDesignTimeServices { public void配置DesignTimeServicesIServiceCollection服务集合 =>服务集合 .AddSingleton; } 公共类CustomMySqlDatabaseModelFactory:MySqlDatabaseModelFactory { 公共CustomMySqlDatabaseModelFactory IDiagnostics日志记录器, IMySqlOptions选项 :baselogger,选项 { } 公共覆盖数据库模型创建 字符串连接字符串, DatabaseModelFactoryOptions选项 { //调试器。启动; var tables=新的HashSet; 使用var connection=new MySqlConnectionconnectionString { 连接。打开; 使用var命令=connection.CreateCommand { command.CommandText=@SELECT`TABLE\u NAME` 来自'INFORMATION\u SCHEMA`.`表` 其中,`TABLE_SCHEMA`=模式,`TABLE_TYPE`='BASE TABLE';; 使用var dataReader=command.ExecuteReader { 而dataReader.Read { tables.AdddataReader.GetStringTABLE_名称; } } } } 返回基地。创建 连接字符串, 新的DatabaseModelFactoryOptions表; } } 内部静态类程序 { 专用静态空干管 { } } } 3使用连接字符串选项的Pomelo 3.2.0+解决方案 我们刚刚在GitHub存储库中为该功能添加了和

它将是3.2.0版本的一部分,也将在大约24小时内从我们的网站上提供

它引入了一个Pomelo和Scaffold特定的连接字符串选项Scaffold:Views=off,可以将其设置为命令行的一部分:

dotnet ef dbcontext scaffold "server=127.0.0.1; uid=root; pwd=; database=So62830251; Scaffold:Views=off" Pomelo.EntityFrameworkCore.MySql -c Context

您还可以使用EF Core Power Tools,这使您能够更轻松地进行和保留表格选择。您还可以使用EF Core Power Tools,这使您能够更轻松地进行和保留表格选择。