【发布时间】:2020-01-02 18:08:24
【问题描述】:
我想首先在我的 .net Framework 4.7 项目中使用 EF Core 2.2 和数据库。运行此命令可以正常工作:
Scaffold-DbContext "data source=dbServer;initial catalog=myData;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Database
但随后 MS 发出此警告:
警告要保护连接字符串中的潜在敏感信息,您应该将其移出源代码。有关存储连接字符串的指导,请参阅 http://go.microsoft.com/fwlink/?LinkId=723263。
所以我认为我按照指示做了,并将脚本更新如下:
Scaffold-DbContext "name=MyConnection" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Database
导致此错误:
使用了命名连接字符串,但在应用程序的配置中找不到名称“MyConnection”。请注意,仅在使用“IConfiguration”和服务提供者时才支持命名连接字符串,例如在典型的 ASP.NET Core 应用程序中。请参阅https://go.microsoft.com/fwlink/?linkid=850912 了解更多信息。
命名连接本身工作正常,我通过注释掉 EF 核心生成的第一行并使用第二行来测试:
//optionsBuilder.UseSqlServer("data source=dbServer;initial catalog=myData;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework");
optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString);
启动程序它可以连接并按预期显示数据。但我更愿意在 Scaffold-DbContext 中使用该设置。有什么想法吗?
为了完整起见,这里是 app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="MyConnection" connectionString="data source=dbServer;initial catalog=myData;integrated security=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
...
【问题讨论】:
-
“但随后 MS 放下了这个警告” 在哪里?
-
您的 .Net 框架是控制台应用吗?
-
@IvanStoev: 在从 dbcontext 派生的生成类中带有 'optionsBuilder.UseSqlServer(' 的行的正上方
-
@user10728126:它是一个 WPF 应用程序
标签: c# entity-framework entity-framework-core