如何在 API 项目中指定实体框架连接字符串
Posted
技术标签:
【中文标题】如何在 API 项目中指定实体框架连接字符串【英文标题】:How to specify an Entity Framework Connection String in API Project 【发布时间】:2021-09-10 12:53:29 【问题描述】:问题:如何在 .NET API 中指定实体框架连接字符串?
我习惯于像这里一样创建一个 DAL 类并指定基本连接字符串。
public class LocalContext : DbContext
public LocalContext() : base("LocalDBContext")
public DbSet<Weapons> Weapons get; set;
这又从 web.config 或 appsettings.json 中获取 LocalDBContext 连接字符串。
"ConnectionStrings":
"LocalDBContext": "Server=.;Database=Weapons;Trusted_Connection=True;"
,
这是我过去在各种网络应用中所做的,但不确定我是否必须对 API 做一些不同的事情?
我希望它会在“Server=”处调用并保存到“Weapons”中。但是,它在“(localdb)\mssqllocaldb”的连接处创建了一个名为“LocalDBContext”的新数据库。任何提示将不胜感激!
【问题讨论】:
【参考方案1】:在 EF 核心中,您不需要使用构造函数向基类发送连接,只需遵循以下方法:
public partial class LocalContext : DbContext
public LocalContext ()
public LocalContext(DbContextOptions<LocalContext> options) :
base(options)
public virtual DbSet<Weapon> Weapons get; set;
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
if (!optionsBuilder.IsConfigured)
//warning You can move this code to protect potentially sensitive
information
//in connection string.
optionsBuilder.UseSqlServer("Data Source= .;Initial
Catalog=Weapons;Trusted_Connection=True;");
【讨论】:
【参考方案2】:给定的字符串"LocalDBContext"
被解释为连接字符串,见official Documentation on DbContext(String).
执行以下操作:
public class LocalContext : DbContext
public LocalContext (DbContextOptions<LocalContext> options)
: base(options)
....
【讨论】:
【参考方案3】:我有一些问题如下:
问题:
-
您是否在 API 解决方案中添加了实体数据模型?
如果是,您在添加 EDM 时没有将连接字符串保存在配置文件中吗?
在解决方案中添加 EDMX 时,模型窗口会要求连接数据库。一旦 EDM 连接到数据库,它会要求将连接字符串保存在配置文件中。您可以添加表、函数、SP、视图。这种方式 EDM 连接实际数据库而不是选择不同的数据库。
【讨论】:
以上是关于如何在 API 项目中指定实体框架连接字符串的主要内容,如果未能解决你的问题,请参考以下文章