2009-09-29 24 views
19

Projemde EntityFramework kullanan DAL katmanında bazı birim testleri çalıştırmak istiyorum. Testlerin her çalıştırılmasından önce yeni bir veri tabanından senaryolar oluşturuyorum (test yaparken daima aynı ilk verilere sahip olabilmek için). Testlerin sonunda, bu veritabanı ([ClassInitialize()] ve [ClassCleanup()] öznitelikleri yardımıyla otomatik olarak yapılır.Bağlantı dizesi içinde db adını çalışma zamanında yönetme Entity Framework

Oluşturulan veritabanının her zaman farklı bir adı vardır, TestDB gibi bir şey -2009-01-31--12-00-00, meslektaşlarımın test veritabanları ile çelişmemek için

Sahip olduğum asıl sorun, EntityFramework'a henüz bir yol bulamadım. oluşturulan veritabanına bağlanın (ad çalışma zamanında oluşturulur) Şu anda normal olan app.config dosyasında belirtilen bağlantı dizesine bağlanır ve bu testleri yapıyorum çünkü DAL dll dışından yapılabilecek bir şey için (doğrudan EF bağlamında hiçbir şey ayarlamadan)

Her türlü yardım büyük beğeni topluyor.

Teşekkürler.

cevap

38

ObjectContext'i oluşturduğunuzda, bir ConnectionString parametresini alan kurucu aşırı yüklenmesini kullanmanız gerekir.

Bu ConnectionString'i bir EntityConnectionStringBuilder kullanarak oluşturabilirsiniz. Daha spesifik olarak, temel veritabanınızın SQL Server olduğunu varsayarak, EntityConnectionStringBuilder.ProviderConnectionString değerinin değerini artırmak için kullanabilirsiniz. İşte

SQL Server bağlantı dize

var scsb = new SqlConnectionStringBuilder(); 
scsb.DataSource = "localhost"; 
scsb.InitialCatalog = "MyDB"; 
scsb.IntegratedSecurity = true; 

kurar bazı kodudur Ve burada Varlık ConnectionString kurar bazı kod:

var builder = new EntityConnectionStringBuilder(); 
builder.Metadata = "res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl"; 
builder.Provider = "System.Data.SqlClient"; 
builder.ProviderConnectionString = scsb.ConnectionString; 
İlgili konular