2013-02-26 1 views
5

В настоящее время я пытаюсь использовать тот же DbContext (у меня есть две базы данных одинаковой структуры) в моем приложении. Я не совсем уверен, что я делаю неправильно, но вот мой текущий код - надеюсь, должно быть довольно очевидно, что я пытаюсь сделать. Сначала я использую базу данных EF (которая, по-видимому, не указывает на ошибку внизу).Entity Framework - с использованием того же DbContext с различными строками подключения

Мой код контекста завода:

public class HOLContextFactory 
    { 
     public static HOLDbEntities Create() 
     { 
      return new HOLDbEntities(); // Works 
     } 

     public static HOLDbQuoteEntities CreateQuote() 
     { 
      return new HOLDbQuoteEntities(); // Gives error 
     } 
    } 

public partial class HOLDbQuoteEntities : HOLDbEntities 
    { 
     public HOLDbQuoteEntities() 
      : base("HOLDbQuoteEntities") // This should send "HOLDbQuoteEntities" as the base connection string?! 
// Also tried "name=HOLDbQuoteEntities" 
      { 
      } 
     } 

Web.config соединения строк:

<add name="HOLDbEntities" connectionString="metadata=res://*/HOLDbContext.csdl|res://*/HOLDbContext.ssdl|res://*/HOLDbContext.msl;provider=System.Data.SqlClient;provider connection string=<connstringdetails>" providerName="System.Data.EntityClient" /> 

<add name="HOLDbQuoteEntities" connectionString="metadata=res://*/HOLDbContext.csdl|res://*/HOLDbContext.ssdl|res://*/HOLDbContext.msl;provider=System.Data.SqlClient;provider connection string=<connstringdetails>" providerName="System.Data.EntityClient" /> // using diff database - same structure 

Ошибка я получаю при использовании "HOLDbQuoteEntities":

Код генерируется с помощью Шаблоны T4 для базы данных First и Model Первая разработка может работать неправильно, если используется в Code First m ода. Чтобы продолжить использование базы данных сначала или модели Сначала убедитесь, что строка подключения Entity Framework указана в файле конфигурации исполняющего приложения. Для того, чтобы использовать эти классы, которые были созданы из Database First или Model First, с Code First добавить любую дополнительную конфигурации с использованием атрибутов или DbModelBuilder API, а затем удалить код, генерирующий этого исключение **

ответ

4

Entity Framework необходимо использовать фактические объекты объекта:

public class HOLContextFactory 
{ 
    public static HOLDbEntities Create() 
    { 
     // default connection string 
     return new HOLDbEntities(); 
    } 

    public static HOLDbEntities CreateQuote() 
    { 
     // specified connection string 
     return new HOLDbEntities ("HOLDbQuoteEntities"); 
    } 
} 

public partial class HOLDbEntities 
{ 
    public HOLDbEntities(string connectionString) 
     : base(connectionString) 
     { 
     } 
    } 
} 
+0

Это на самом деле, как я сделал это в конце концов. –

1

I» я сделал то же самое в одном из моих проектов. Я создаю контекст сущностей с использованием metadata=res://*/

Попробуйте это:

<add name="HOLDbEntities" connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider connection string=<connstringdetails>" providerName="System.Data.EntityClient" /> 

<add name="HOLDbQuoteEntities" connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider connection string=<connstringdetails>" providerName="System.Data.EntityClient" /> 
Смежные вопросы