【问题标题】:Where is my connection string?我的连接字符串在哪里?
【发布时间】:2014-12-26 21:43:38
【问题描述】:

我创建了一个名为 Repository.EF 的项目来处理 n 轮胎解决方案中的数据访问。我已将 EF 添加到我拥有所有 POCO 的 Repository.EF 项目中。然后我像这样在那个项目中创建了一个 DbContext 类。

namespace LearningSpike.Repositories.EF
{
class GlassContractDbContext:DbContext
    {
    public GlassContractDbContext() : base("GlassContractContext")
    {
    }

    public DbSet<MetalStock> MetalStock { get; set; }


    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Configurations.Add(new MetalStockConfiguration());
    } 
}

然后转到包管理器控制台并做了

Enable-Migrations 

然后设置

 AutomaticMigrationsEnabled = true;

然后

Update-Database

一切正常。但问题是,我不知道连接字符串在哪里。该特定项目中似乎没有 connectionString 。我知道如果我有一个 MVC4/5 模板,web.config 中就会有一个 connectionString。如何找到连接字符串? 我现在该如何配置?例如,我记得在 MVC5 应用程序中使用 connectionString 进行此操作

 MultipleActiveResultSets=true

我现在该怎么做?

谢谢! 干杯!

PS

我在 Repository.EF 项目的 App.config 中也有以下代码

 <?xml version="1.0" encoding="utf-8"?>
 <configuration>
 <configSections>

 <section name="entityFramework"
 type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, 
 EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"  
 requirePermission="false" />
 <!-- For more information on Entity Framework configuration, visit 
 http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>
 <entityFramework>
 <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory,
 EntityFramework" />
<providers>
  <provider invariantName="System.Data.SqlClient" 
    type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
  </providers>

</entityFramework>

【问题讨论】:

  • 你的连接字符串应该在你的 web 项目的 web.config 中
  • 您好,感谢您的快速回复。但是,问题是,这个项目中没有 web.config。这个项目只是一个类库,我有我所有的 POCO 的 .所以我在其中添加了 EF。我们的想法是保持这一层分离并仅将其用于数据访问。
  • 您单独的类库将被加载到某些应用程序中以便工作,因此它将使用来自其“主机”应用程序的连接字符串。
  • 当您创建一个库并且该库被另一个项目引用时,EF 将读取与启动项目相关的配置。否则你有一个 app.config 里面有连接字符串,否则应该在你的 datacontext ctor
  • 我在这里添加了我的 app.config。请看看并告诉我是否可以在这里添加我的连接字符串?

标签: asp.net-mvc entity-framework model-view-controller


【解决方案1】:

运行包管理器控制台时,它将默认使用启动项目(除非您在命令中指定 -project 参数或使用控制台管理器中的下拉菜单)。从那里它将在该项目的配置文件中查找您的连接字符串。如果那是一个 Web 项目,它将在 web.config 中。

如果您尚未将自己的连接字符串添加到该项目,EF 将能够使用从项目名称派生的自己的连接字符串,并创建一个 mdf 文件,它会在运行时动态附加该文件。

如果你想添加一个连接字符串(你可以在你的任何配置文件中这样做 - 但是你想通过它的声音将它添加到你的数据层项目中的 app.config 中)你可以在你的下面添加它配置部分:

<connectionStrings>
<add name="MyDatabase"
     providerName="System.Data.SqlClient"
     connectionString="Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;"/>
</connectionStrings>

【讨论】:

  • 感谢您的回复。我已经使用下拉列表更改了项目,因此所有迁移文件夹和东西都在我想要的正确项目中。如何添加自己的连接字符串?
  • 您可以指定连接字符串名称和来自另一个项目的项目名称,但如果您愿意,可以将迁移保留在数据层中。例如。更新数据库-project“learningspike.web”-connectionstringname“GlassContract”
  • 你能详细解释一下吗?抱歉,添麻烦了。我理解你的概念。我该怎么做?
  • 我扩展了我的答案,包括如何在数据层项目中向 app.config 添加连接字符串
  • 嗨,马特,非常感谢您的努力。还是有点问题。我以为 EF 会在我在连接字符串中命名的文件夹中创建一个新数据库。但它似乎仍然忽略了这一点并创建了自己的。我已经删除并添加了所有内容,但仍然没有运气。也许我需要了解更多关于 EF 和连接字符串的信息。
猜你喜欢
  • 2011-08-13
  • 2014-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-15
  • 2010-11-25
相关资源
最近更新 更多