【发布时间】:2021-09-13 09:05:33
【问题描述】:
项目说明:
我是 ASP NET CORE 的新手。 首先使用 DB 我的解决方案中有三个项目。是哪个。
User.API(网络 API 项目)
User.Data(具有数据库方法和 db insatace 的 c# 类库)
User.Model(具有脚手架数据库上下文的 c# 类库和 生成的模型类)
请求流程是这样的,Api调用Data project中的GetUser()方法,然后Data项目使用Db Context实例取回数据。
问题: 在上下文文件中我有
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer("Server=.;Database=UserDB;Trusted_Connection=True;");
}
}
我想使用命名连接而不是像下面这样的硬编码连接字符串
optionsBuilder.UseSqlServer("name=UserCloudConnectionString");
我尝试了不同的解决方案like this,但无法得到它。哪个项目我必须添加一个文件,我需要在startup.cs文件中添加json文件
任何帮助将不胜感激。
【问题讨论】:
-
不要在
OnConfiguring中配置连接字符串。在注册 DbContext 的AddDbContext调用中执行此操作。此时您可以访问Configuration并可以调用Configuration.GetConnectionString("MyConnection")来获取连接字符串。appsettings不是特殊文件,它只是包含设置的 JSON 文件的默认名称。此类设置(包括连接字符串)可以来自环境变量、命令行参数或其他来源。要阅读它们,您需要访问配置中间件,例如通过IConfiguration -
OnConfiguring 是 Context 文件中生成的方法。当我使用脚手架命令从数据库中获取表时。它是这样生成的。
-
是的,但这并不意味着您需要使用它。无法从inside DbContext 中按名称读取连接字符串。这些设置可通过配置中间件获得。 DbContext 与该中间件无关。
标签: c# asp.net asp.net-core asp.net-web-api