如何在 API 项目中指定 Entity Framework 连接字符串
How to specify an Entity Framework Connection String in API Project
问题:如何在 .NET API 中指定 Entity Framework 连接字符串?
我习惯于创建一个 DAL class 并像我在这里所做的那样指定基本连接字符串。
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”的新数据库。任何提示将不胜感激!
给定的字符串 "LocalDBContext"
被解释为连接字符串,参见 official Documentation on DbContext(String).
做类似的事情:
public class LocalContext : DbContext
{
public LocalContext (DbContextOptions<LocalContext> options)
: base(options)
{
}
....
我有以下问题:
问题:
- 您是否在 API 解决方案中添加了实体数据模型?
- 如果是,你在添加 EDM 时没有在配置文件中保存连接字符串吗?
在解决方案中添加 EDMX 时,模型 window 要求连接数据库。一旦 EDM 连接到数据库,它会要求将连接字符串保存在配置文件中。您可以添加表、函数、SP、视图。通过这种方式,EDM 连接到实际数据库,而不是选择不同的数据库。
在 EF 核心中,您不需要使用构造函数向基础 class 发送连接,只需遵循以下方法:
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;");
}
}
}
问题:如何在 .NET API 中指定 Entity Framework 连接字符串?
我习惯于创建一个 DAL class 并像我在这里所做的那样指定基本连接字符串。
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”的新数据库。任何提示将不胜感激!
给定的字符串 "LocalDBContext"
被解释为连接字符串,参见 official Documentation on DbContext(String).
做类似的事情:
public class LocalContext : DbContext
{
public LocalContext (DbContextOptions<LocalContext> options)
: base(options)
{
}
....
我有以下问题:
问题:
- 您是否在 API 解决方案中添加了实体数据模型?
- 如果是,你在添加 EDM 时没有在配置文件中保存连接字符串吗?
在解决方案中添加 EDMX 时,模型 window 要求连接数据库。一旦 EDM 连接到数据库,它会要求将连接字符串保存在配置文件中。您可以添加表、函数、SP、视图。通过这种方式,EDM 连接到实际数据库,而不是选择不同的数据库。
在 EF 核心中,您不需要使用构造函数向基础 class 发送连接,只需遵循以下方法:
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;");
}
}
}