2012-02-07 16 views
5

Sorunların çözümü için arıyorum ve muhtemelen çok sayıda karşı karşıya.Çoklu edmx dosyaları arasında bir model paylaşın (Varlık Framework 4.0)

Yaklaşık 400 tablo içeren bir uygulama üzerinde çalışıyorum. Uygulama, yedi sınıf kitaplık projesinden (StudentInfo, kitaplık, Ücretler vb.) Oluşur ve her birinin kod oluşturma stratejisi olan varsayılan .edmx (50 tablodan oluşur) dosyası vardır. Varsayılan ve sınıf kütüphanesi projelerine başvuran tek bir web uygulaması projesidir. .
Her sınıf kitaplığı projesinde ortak olan ve .edmx dosyasında bulunacak yaklaşık 15 tablo vardır. Sınıfların/modellerin ad alanı, tüm .edmx dosyalarındaki aynıdır (Kampüs).

Bazı yöntemleri içeren bir kısmi sınıfa (yani commom tablosu/modelinden biri olan) bir okul yarattım.

aşağıdaki derleme zamanı hatası atılır Ancak 'Campus.School' hem 'D: \ Proje \ Kampüs \ CampusStudent \' bulunan tür ve 'D: Debug \ \ \ Proje \ Kampüs \ CampusLibrary \ bin CampusLibrary.dll '

Diğer üyeler tarafından önerilen çözümler
1) .edmx dosyalarının her biri için ayrı ad alanlarına sahip olun.
2) Farklı isimleri StudentSchool, LibrarySchool vb. Modellerine kullanın.
Her iki çözüm de, sınıf sınıf kitaplarının her birinde kendi yöntemleri ile ortak sınıfları çoğaltmam için zorlar. Herkes bana yardım edebilir mi?

+0

Sanırım soru, tüm edmx dosyalarında bulunan 15 tabloya gerçekten ihtiyacınız olup olmadığı sorusu. Artıklığı ortadan kaldırmak için modelleri mantıklı bir şekilde bölemez misiniz? –

cevap

6

Geçerli varlık üretimi için POCO T4 şablonunu kullanıyorsanız bir yol olabilir. EF'deki POCO'lar, EDMX'inizdeki isimle aynı isme sahip olan ve EDMX'teki aynı adla tüm özelliklere sahip olan herhangi bir ad alanında (getçiler ve ayarlayıcılar için aynı türler ve erişimler dahil) herhangi bir sınıf olabilir.

Paylaşılan 15 sınıfınızı başka bir derlemede tanımlayın (belirtilen POCO kurallarına uymanız gerekir) ve tüm kitaplık projeleri tarafından başvuruda bulunun. Bu derlemeyi yaptıktan sonra, bu paylaşılan varlıklar için yeni sınıf dosyaları oluşturmayacak ve bunun yerine başvurulan derleme sınıflarını kullanacak olan kendi POCO T4 şablonunuzu oluşturun.

Diğer seçenek, tüm bu 400 sınıf ve EF içerik türlerinin el ile oluşturulması ve bakımıdır. Kod eşleştirmeyi (aka kod ilkinde) kullanırsanız ve bu sorunları yaşamayacak olursanız yapacağınız şey budur.

+0

Cevabınız için teşekkür ederiz. Bunu uygulamaya çalışacağım. –

+0

Sevgili Ladislav, Uygulamamda bana yardımcı olabilecek bir örnek uygulama veya kaynak var mı? Aslında, önerilerinizi, bu paylaşılan varlıklar için yeni sınıf dosyaları oluşturmayacak ve bunun yerine, başvurulan derlemeden sınıfları kullanmayacak olan POCO T4 şablonu ** oluşturmaya çalışamıyorum. ** EF –

+0

'da çok yetkin olmadığım için özür dilerim. bir örneğiniz yok. Sadece oluşturulmaması gereken, statik isimleri kodlanmış sabit ad koleksiyonları oluşturmanız gerekir. Bu koleksiyon doğrudan şablonda tanımlanacaktır. Varlıklar için kod oluşturan şablon bölümünde, koleksiyonda varlık adının bulunmadığını doğrulayın. Başvurulan derlemeden doğru tür kullanmak için diğer varlıklardaki gezinme özelliklerini oluşturmak için kod değiştirmeniz de gerekecektir. –

İlgili konular