1000+ tablo, birkaç yüz görüntü ve birkaç bin saklı yordam içeren bir SQL Server veritabanı ile çalışıyorum. Yeni projelerimiz için Entity Framework'ü kullanmaya başlamak istiyoruz ve bunu yapmak için stratejimiz üzerinde çalışıyoruz. Kapattığım şey, tabloları farklı modellere ayırmanın en iyi yoludur (önce kodu koyarsak EDMX veya DbContext). Hemen yarasadan birkaç strateji düşünebilirim:
- Şemaya göre
bölme Tablolarımız muhtemelen bir düzine şemaya bölünmüştür. Şema başına bir model yapabiliriz. Bu mükemmel değil, çünkü dbo hala 500'den fazla tablo / görüntüyle çok büyük oluyor. Başka bir sorun da, belli çalışma birimlerinin, EF'in bunu oldukça basitleştirdiğini kabul etmeme rağmen, karmaşıklığı artıran çoklu modelleri kapsayan işlemleri yapmak zorunda kalmalarıdır. - Niyete göre
ayırma Şemalar için endişelenmek yerine, modelleri niyete göre ayırın. Bu nedenle, ne kadar granül almak istediğimize bağlı olarak her uygulama veya proje veya modül veya ekran için farklı modellerimiz olacak. Bununla ilgili gördüğüm sorun, kaçınılmaz olarak Kullanıcı ya da AuditHistory gibi her durumda kullanılması gereken bazı tablolar olması. Bunları her modele mi ekliyoruz (sanırım DRY'yi ihlal ediyor) veya bunlar her proje tarafından kullanılan ayrı bir modelde mi? - Hiç ayrılmayın - dev bir model
Bu açıkça bir geliştirme perspektifinden basittir ancak benim araştırmam ve sezgilerime göre bu hem tasarım zamanında, hem de derleme zamanında ve muhtemelen çalışma zamanında korkunç performans göstermiş gibi görünüyor.
Böyle büyük bir veritabanına karşı EF kullanmanın en iyi yolu nedir? Özellikle insanlar bu DB nesneleri hacmine karşı model tasarımında hangi stratejileri kullanıyorlar? Bu işi, yukarıda sahip olduğumdan daha iyi düşünmediğim seçenekler var mı?
Ayrıca, bu NHibernate gibi diğer ORM'lerde bir sorun mu? Eğer öyleyse, EF'den daha iyi bir çözüm buldular mı?