【问题标题】:How to specify an Entity Framework Connection String in API Project如何在 API 项目中指定实体框架连接字符串
【发布时间】: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”的新数据库。任何提示将不胜感激!

【问题讨论】:

    标签: c# entity-framework asp.net-core-webapi connection-string


    【解决方案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】:

        我有一些问题如下:

        问题:

        1. 您是否在 API 解决方案中添加了实体数据模型?
        2. 如果是,您在添加 EDM 时没有将连接字符串保存在配置文件中吗?

        在解决方案中添加 EDMX 时,模型窗口会要求连接数据库。一旦 EDM 连接到数据库,它会要求将连接字符串保存在配置文件中。您可以添加表、函数、SP、视图。这种方式 EDM 连接实际数据库而不是选择不同的数据库。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-02-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多