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

时间:2015-05-11 20:54:17

标签: entity-framework asp.net-web-api connection-string configuration-files

我已经使用VS空应用程序模板启动了一个WebAPI应用程序。 首先,我添加了WebAPI服务功能 - 没有问题。 现在,我需要添加实体框架功能,我面临以下问题: 我的应用程序中没有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);

        }
    }
}

2 个答案:

答案 0 :(得分:2)

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

“将要执行的项目”是什么意思?

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

    Web应用程序项目中的
  • web.config,在运行应用程序时使用
  • 每个测试项目一个app.config,将在您运行相应的测试时使用

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

答案 1 :(得分:0)

毕竟我确实有App.config,起初没看到它。 找到后,我为实体框架添加了一个部分:

<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>

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