2013-02-26 19 views
5

Şu anda benim uygulamamda aynı DbContext (aynı veritabanına sahip iki veritabanım var) kullanmaya çalışıyorum. Neyi yanlış yaptığımı tam olarak bilmiyorum, ama şu anki kodum - umarım yapmak istediğim şey oldukça açık olmalıdır. İlk EF Veritabanını kullanıyorum (alt kısımdaki hata önerilmiyor gibi görünüyor).Entity Framework - farklı bağlantı dizeleriyle aynı DbContext'i kullanma

Benim bağlam fabrika kodu:

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 bağlantı dizeleri: "HOLDbQuoteEntities" kullanırken alıyorum

<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 

Hata:

Kod kullanılarak oluşturulan Veri Tabanı İlk ve Model için T4 şablonları İlk Geliştirme, Kod İlkinde kullanıldığında doğru çalışmayabilir. M gazel. Veri Tabanı Önce ya da Modeli Kullanmaya devam etmek için , uygulama Çerçeve bağlantı dizesinin uygulama yürütme yapılandırma dosyasında belirtildiğinden emin olun. özelliklerini veya DbModelBuilder API kullanarak herhangi bir ek yapılandırma eklemek Kod Birinci ile Veritabanı Birinci veya Model Birinci oluşturulan edilen bu sınıflar, kullanmak ve daha sonra **

cevap

4

nesne: Sonunda bunu nasıl yaptığını

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

Bu aslında ben metadata=res://*/

bu deneyin kullanarak varlık bağlam oluşturarak ediyorum. –

1

Ben bu istisna atar kod kaldırmak için projemden birinde aynı şeyi yaptım. Varlık Framework fiili varlıkları kullanması gerekir

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