2014-12-26 117 views
1

我創建了一個項目通話Repository.EF來處理一個正解的輪胎數據訪問。我已經將EF添加到了Repository.EF項目中,我擁有了所有POCO的項目。然後我在這個項目中創建了一個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

我也有我的App.config下面的代碼在Repository.EF項目

<?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> 
+0

你的連接字符串應該在web項目的web.config – InferOn

+1

嗨,感謝您的快速回復。但是,問題是,這個項目中沒有web.config。這個項目只是一個班級庫,我擁有我所有的POCO。所以我加了EF。這個想法是保持這個層分離,並將其用於數據訪問。 –

+0

你單獨的類庫會在某些應用中,爲了工作,所以它會使用連接字符串從「主機」應用程序加載。 – Fedor

回答

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

感謝您的回覆。我已經改變使用下拉列表中,這樣所有的遷移文件夾之類的東西都在正確的項目,我希望他們的項目。我如何添加自己的連接字符串? –

+0

您可以從另一個項目中指定連接字符串名稱和項目名稱,但如果需要,請將您的遷移保留在數據層中。例如。 update-database -project「learningspike.web」-connectionstringname「GlassContract」 – Matt

+0

請你詳細解釋一下給我的。抱歉,添麻煩了。我理解你的概念。我該怎麼做? –