C# 使用连接字符串实体框架在运行时生成DbContext和模型

C# 使用连接字符串实体框架在运行时生成DbContext和模型,c#,entity-framework,entity-framework-core,C#,Entity Framework,Entity Framework Core,是否有任何方法可以在运行时仅使用连接字符串生成DbContext 我们可以使用Scaffold在实体框架核心上生成现有数据库的模型和DbContext,这些模型和DbContext必须从packagemanager控制台或powershell运行。基于此,我想到了这样一个想法,在运行时可以从控制台应用程序执行Scaffold命令,其中应用程序将提供动态连接字符串 如有任何其他或好的建议,我们将不胜感激 是的,这是可能的 是的,这是可能的 对于EF5,我的解决方案是运行附加到项目预构建事件的EF

是否有任何方法可以在运行时仅使用连接字符串生成DbContext

我们可以使用Scaffold在实体框架核心上生成现有数据库的模型和DbContext,这些模型和DbContext必须从packagemanager控制台或powershell运行。基于此,我想到了这样一个想法,在运行时可以从控制台应用程序执行Scaffold命令,其中应用程序将提供动态连接字符串

如有任何其他或好的建议,我们将不胜感激

是的,这是可能的

是的,这是可能的


对于EF5,我的解决方案是运行附加到项目预构建事件的EF CLI命令

if $(ConfigurationName) == TEST1 (

dotnet ef dbcontext scaffold name=dbConnStringName Microsoft.EntityFrameworkCore.SqlServer --startup-project ../C2C-PublicApi/C2C.PublicApi.Api.csproj -p ./C2C.PublicApi.Data.csproj -o Entities -n C2C.PublicApi.Data.Entities --context-dir ./DataContexts --context-namespace C2C.PublicApi.Data.DataContexts -c C2CApiDbContext -t [dbo].[tbl_AnaestheticType] -t [dbo].[tbl_Appointment] -t [dbo].[tbl_AppointmentCancellationReason] -t [dbo].[tbl_AppointmentCancellationSource] -t [dbo].[tbl_AppointmentConsultType] -t [dbo].[tbl_AppointmentType] -t [dbo].[tbl_BillingAccountType] --no-pluralize --no-onconfiguring **--no-build** --force

)

最有可能的情况是,您将在数据库的生成事件之前运行它。另外,在假定项目已更新且不需要重新编译的情况下,包含-no build选项也很重要。

对于EF 5,我的解决方案是运行附加到项目预构建事件的EF CLI命令

if $(ConfigurationName) == TEST1 (

dotnet ef dbcontext scaffold name=dbConnStringName Microsoft.EntityFrameworkCore.SqlServer --startup-project ../C2C-PublicApi/C2C.PublicApi.Api.csproj -p ./C2C.PublicApi.Data.csproj -o Entities -n C2C.PublicApi.Data.Entities --context-dir ./DataContexts --context-namespace C2C.PublicApi.Data.DataContexts -c C2CApiDbContext -t [dbo].[tbl_AnaestheticType] -t [dbo].[tbl_Appointment] -t [dbo].[tbl_AppointmentCancellationReason] -t [dbo].[tbl_AppointmentCancellationSource] -t [dbo].[tbl_AppointmentConsultType] -t [dbo].[tbl_AppointmentType] -t [dbo].[tbl_BillingAccountType] --no-pluralize --no-onconfiguring **--no-build** --force

)

最有可能的情况是,您将在数据库的生成事件之前运行它。而且在假定项目已更新且不需要重新编译的情况下,包含-no build选项非常重要。

您会保留一个连接还是在需要时更改它?希望经常更改。如果您要求的是在运行时在同一dbcontext上动态传递不同的连接字符串,则可能是,你们错了,我注意到脚手架和现有的数据库,这意味着数据库优先。我将手动更改连接字符串。您将如何针对运行时生成的dbcontext编写代码?您会保留一个连接还是在需要时更改它?希望经常更改。如果您要求的是在运行时在同一dbcontext上动态传递不同的连接字符串,则可能否,你们错了,我注意到脚手架和现有的数据库,这意味着数据库优先。我将手动更改连接字符串。如何针对运行时生成的dbcontext编写代码?