Bir süre önce aşağıdakileri yazdım, ama son zamanlarda gözden geçirmeye geldim ve şimdi bunun iyi bir tasarım olduğunu düşünmüyorum.
Tasarım, Entity Framework 4 kullanan bir tür modüler veritabanı katmanı içindir. Belirli bir konumdaki harici kitaplıklardan varlık çerçevesi bağlamlarını yükleyen (tembel olarak) tek bir veritabanı nesnesi vardır ve yüklenen bağlamların örnekleri bir hash tablosunda isimleri (EG "ContentMgmtContext").
Bu sistemdeki veritabanı ile tüm temas saklı yordamlar yoluyla yapılır. Veritabanına çağrı yapmak için sorgu yöntemi imzası şöyle görünür:
List<TReturn> Query<TReturn>(string Context,
string Procedure,
TransactionScope Scope,
List<ObjectParameter> QueryParameters)
Bu modülerlik sevdiğim bir şey. Ancak, bu yaklaşımın önemli bir dezavantajı vardır: when using the database layer, the code using it has to have a reference to the library in which the context is stored, in order to access the types returned by the stored procedures through Entity Framework.
Modelde, veritabanı katmanındaki nesneler, görünüm ve denetleyicinin kullandığı yeni nesnelere çevrilir.
Bunun kötü bir tasarım olduğunu düşünüyorum, ancak nasıl geliştirebilirim? IStoredProecedureObject
Saklı bir yordam tarafından döndürülen her veri türü ortak bir temel türü vermek gibi boş bir arabirim eklemeyi düşündüm , ancak bu Entity Framework tarafından başarısız gibi görünüyor. Her zaman .edmx
dosya derlenmiş çekirdekler, kod yeniden oluşturulur ve herhangi bir ekleme kaldırıldı. Bunun olmasını engellemenin bir yolu var mı?
Bu tasarımı nasıl geliştirebilirim? Ne (başka) ile ilgili yanlış? Yoksa doğru yolda mıyım?