2015-12-20 7 views
2

Я создал базу данных приложений с помощью MSDN Tutorial, но теперь я пытаюсь создать две отдельные базы данных, одну для тех, когда я отлаживаю, а другой для релизов, потому что он не добавляет строку app.config для строки подключения ...Использование разных баз данных для Debug и Release на Entity Framework Code First (DbContext)

Когда я открываю свойства базы данных в проводнике сервера, я вижу, что фактическая строка подключения Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=MediaManager.Model.Context;Integrated Security=True, но я могу 't различать его, когда в режиме отладки или выпуска ...

Как я могу это сделать?


App.config

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
     <section name="MediaManager.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" /> 
    </sectionGroup> 
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
     <section name="MediaManager.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </sectionGroup> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <userSettings> 
    <MediaManager.Properties.Settings> 
     ... 
    </MediaManager.Properties.Settings> 
    </userSettings> 
    <system.net> 
    <defaultProxy useDefaultCredentials="true" /> 
    </system.net> 
    <applicationSettings> 
    <MediaManager.Properties.Settings> 
     ... 
    </MediaManager.Properties.Settings> 
    </applicationSettings> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="mssqllocaldb" /> 
     </parameters> 
    </defaultConnectionFactory> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
    </providers> 
    </entityFramework> 
</configuration> 

Context.cs

using System.Data.Entity; 

namespace MediaManager.Model 
{ 
    public class Context : DbContext, IContext 
    { 
     public virtual DbSet<Episodio> Episodio { get; set; } 

     public virtual DbSet<Serie> Serie { get; set; } 

     public virtual DbSet<SerieAlias> SerieAlias { get; set; } 

     public virtual DbSet<Feed> Feed { get; set; } 
    } 
} 
+1

Не можете ли вы иметь только две разные строки в файле app.config и использовать #if DEBUG для установки строк подключения? – wentimo

+0

Среды должны устанавливаться путем разработки, постановки и производства. Не знаете, какую версию MVC вы используете, но это возможно в соответствии с этой ссылкой [http://docs.asp.net/en/latest/fundamentals/environments.html] – anoop

ответ

1

Вы должны быть в состоянии просто обновить Context передать в имени строка подключения и определите эту строку соединения в своем web.config.

Например:

public class Context : DbContext, IContext 
{ 
    public Context() : base("MyContext") { } 

    public virtual DbSet<Episodio> Episodio { get; set; } 

    public virtual DbSet<Serie> Serie { get; set; } 

    public virtual DbSet<SerieAlias> SerieAlias { get; set; } 

    public virtual DbSet<Feed> Feed { get; set; } 
} 

Тогда в web.config

<configuration> 
    <connectionStrings> 
     <add name="MyContext" connectionString="..your connection string.." providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
</configuration> 

После того, как это на месте, вы можете использовать Web Configuration Transforms для автоматического обновления строки соединения для выпуска сборки VS. a Отладка сборка.