2009-05-13 23 views
7

Varlık Çerçevesi ile katmanlı bir mimariyi, Linq-To-Entities sorgularını içeren bir grup depo ile veri katmanım olarak kullanıyorum. Veri katmanı, bir Hizmetler katmanına ve bir web sitesi olan arabirime sahip olduğum bir projedir.Entity Framework - katmanlı tasarım - Bağlantılar nereye koyulur?

Web sitemin, varlık modelimin bağlantı dizgisini belirtmekten sorumlu olmasını istiyorum. Bunu nasıl yaparım?

Veri havuzunun içinde bulunan varlık havuzuma ulaşmak için tekil bir yöntem kullanıyorum. Bunun yerine L2E ait L2S kullanıyorum ama tavsiye durmak gerektiği halde

sayesinde Benim durumumda

cevap

9

DAL aksamının App.Config dosyasında oluşturulan bağlantı dizesini web.config dosyasının connectionStrings bölümüne kopyalayabilirsiniz.

Bağlantı dizesini derleme dll dosyasında tutabilirsiniz, ancak web sitesiyle dağıtmamanız gerekir.

Tüm bağlantı dizesini kopyalamanız gerekir. Bu gibi görünmelidir:

<add name="DataEntities" connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=xxx;Initial Catalog=xxx;User Id=xxx;Password=xxx;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 

Bu haritalama dosyalarınızı bulunduğu yerlerde tüm bilgileri içermelidir.

+0

Varlık modelimi yeniden oluşturdum ve tekrar denedim ve şimdi çalışıyor, teşekkürler !!! – Peter

3

. Bir XML dosyasından beslenen bir Configure kütüphanesini genelleme. Bir veri içeriği gerektiğinde, her veri nesnesinin aşağıdaki gibi bir yöntemi vardır. Tercih ederseniz, yeterince kolay şablonlanabilir.

private static string _conStr = null; 
private static CalendarsAndListsDataContext GetDataContext() 
{ 
    if (_conStr == null) 
    { 
     _conStr = ConfigurationLibrary.Config.Settings().GetConnectionString("liveConString"); 
    } 

    return new CalendarsAndListsDataContext(_conStr); 
} 

Şimdi, en büyük dezavantajı bağlantı dizesi değişiklikleri bir uygulama yeniden başlatma gerektirir, ancak benim durumumda, bu bir sorun değildir.

+0

Yapılandırmanızı ek bir projede nasıl ayırdığınıza dair fikri beğeniyorum. Ancak bu uygulama için web sitemin bağlantı kurmasından sorumlu olmasını istiyorum. – Peter

+0

Peki, Cofiguration Layer öğesinin yalnızca okunması için bir neden yoktur. Okuma/yazma yapabilirdiniz, bu yüzden COnfigurationLibrary.Config.AddSetting ("ConnectionString", "MyString") gibi bir şey yapabilirsiniz. Sonra web siteniz bağlantı dizgisini hala sürdürebilir. – Serapth