在 WebAPI 应用程序中放置 Entity Framework 配置字符串的位置

where to put Entity Framework configuration strings in a WebAPI application

我已经使用 VS 空应用程序模板启动了一个 WebAPI 应用程序。 首先,我添加了 WebAPI 服务功能——没问题。 现在,我需要添加 Entity Framework 功能,但我面临以下问题: 我的应用程序中没有 App.config 文件。我可以在哪里放置我的数据库配置参数,例如 "Data Source="、"defaultConnectionFactory" 等...? 目前,我的 ApplicationDbContext 文件如下所示:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WebAPIService.Models
{
    public class ApplicationDbContext : DbContext
    {
        public ApplicationDbContext()
            : base("DcToolDB")
        {

        }

        public IDbSet<Site> Sites { get; set; }
        public DbSet<Quote> Quotes { get; set; }
    }

    public class ApplicationDbInitializer : DropCreateDatabaseAlways<ApplicationDbContext>
    {
        protected override void Seed(ApplicationDbContext context)
        {
            base.Seed(context);

        }
    }
}

我毕竟有App.config,只是一开始没看到而已。 找到后,我为 Entity Framework 添加了一个部分:

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="Data Source=.\SQLEXPRESS2012; Initial Catalog=DcToolDB; Integrated Security=True; MultipleActiveResultSets=True" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>

并且能够达到预期的结果。

为了更准确地回答这个问题:您必须在将要执行的项目中包含配置文件(app.configweb.config),而不是在任何其他 class 库项目。如果配置文件不存在,请创建一个。您可以通过在所选项目中添加类型为 "Configuration file" 的新项目,在 VS 中轻松完成此操作。它将根据项目类型创建一个 web.config 文件或一个 app.config

"the project that will be executed" 是什么意思?

当它是桌面应用程序或网站时,它非常清晰。但是,如果您有一个测试项目,那将是您 运行 测试后的可执行项目。因此,如果您有一个包含两个不同测试项目的 Web 应用程序,则需要 3 个配置文件:

  • web.config 在 web 应用程序项目中,在 运行 应用程序
  • 时仍然会用到
  • 每个测试项目一个app.config,当你运行相应的测试时会用到

这很有趣,因为它允许为每个项目保留不同的配置。