28

DAL'imi LINQ kullanarak Entity Framework'e geçirdim. Uygulamam geçerli kullanıcıya bağlı olarak farklı veritabanlarına bağlandığından, çalışma zamanında DataContext'i dinamik olarak oluşturmalı ve uygun bağlantı dizesini geçirmeliyim. Ancak, eski bağlantı dizgimi kullanarak bir Programlama Çerçevesi bağlantısı oluşturmaya çalıştığımda, bağlantı başarısız oldu. Bağlantı dizesindeki anahtarın, "sunucu" nın kesin olduğunu anlamadığından şikayet etti. Neden buBir Varlık Çerçeve Bağlantısı neden bir meta veri özelliği gerektiriyor?

EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(); 
entityBuilder.Provider = "System.Data.SqlClient"; 
entityBuilder.ProviderConnectionString = clientConnectionString; 
entityBuilder.Metadata = "res://*/xxxxxxxxxx.csdl..."; 
Entities entities = new Entities(entityBuilder.ToString()); 

geçerli:

ben varlık Framework bağlantı çalışması için almak için bunu yapmak için gerekli olduğunu öğrendim?
Meta veri özelliği ne için?
Her zaman birden çok farklı bağlantı için aynı sorun olacak mı?
Ne olmalı?
Bunun etrafında herhangi bir yolu var mı?

Şimdiden teşekkürler!

Güncelleme 1: güncelleme Randolpho için teşekkürler, ama ...
Bu sorun yaşıyorum bütün nedeni, bir yapılandırma dosyasında bağlantı dizeleri depolamak olamaz olmasıdır. Bağlantı dizesi, kullanıcının bağlandığı çalışma zamanında dinamik olarak belirlenir. İşte

benim tam senaryodur: A kullanıcısı bağlanıyor
Eğer kullanıcı B bağlayan ettiyseniz uygulama veritabanı A. veri çekerken uygulama
bağlantı dizeleri bir ana saklanır veritabanı B. veri çeker veritabanı ve sayı potansiyel olarak sınırsızdır. Her kullanıcı eklediğimde, web.config'e girmek zorunda kalmak istemiyorum, eninde sonunda BÜYÜK olsun!

+0

Eşleştirmeler her bağlantı için aynı olduğundan ve değişmeyeceğinden, bunların hepsi için aynı Meta Verileri kullanmam önemli değil mi? –

+0

Evet, bu doğru – user230910

cevap

9

Çok bilgilendirici Bu bağlantıları bulacaksınız:

http://msdn.microsoft.com/en-us/library/system.data.entityclient.entityconnection.connectionstring.aspx

http://weblogs.asp.net/pgielens/archive/2006/08/21/ADO.NET-Entity-Framework-Metadata.aspx

Alt çizgi? Varlık Çerçevesi, varlık eşlemelerinizi oluşturmak için meta verilere ihtiyaç duyar. Ayrıca, bağlantı bilgilerinizi kodda oluşturmak yerine yapılandırma dosyanıza taşımak isteyebilirsiniz. İlk bağlantı, bunu nasıl yapacağınızı gösterecektir.

metadata özelliği özellikle .SSDL (Depolama Modeli) konumuna işaret .CSDL (Kavramsal Modeli,) ve .msl (Haritalama Modeli) dosyaları: Randolpho en yanıta genişletilmesi

+2

@ocdecio: Bunun için EF indirmeyin; NHibernate hemen hemen aynı şekilde çalışır. Eminim başka sebepler de vardır. :) – Randolpho

+2

@ocdecio, bir çeşit eşleme dosyası kullanmayan bir ORM mapper'ı görmeyi çok isterim. Tablolarla 1: 1 yapmazsan, bir şeyin ne yapacağını söylemesi gerek. – jfar

24

. Bu üç dosya temel olarak Varlık Veri Modeli'dir. "Res: //" URI stili niteleyici, dosyaların derlenmiş EDM derlemesinde kaynak olarak gömülü olduğunu belirtir.

İlgili konular