SORU
1 Mart 2011, Salı


Toplam Köklerine azaltmak Depoları

Ben şu anda veritabanındaki her tablo için bir depo var ve daha fazla toplam kökleri onları sadece azaltarak DDD kendimi hizalamak istiyorum.

Hadi aşağıdaki tablolar var varsayalım, User Phone. Her kullanıcı bir veya daha fazla cep telefonu var. Toplam kök kavramı olmadan böyle şeyler yapabilirim:

//assuming I have the userId in session for example and I want to update a phone number
List<Phone> phones = PhoneRepository.GetPhoneNumberByUserId(userId);
phones[0].Number = “911”;
PhoneRepository.Update(phones[0]);

Toplam kökleri kavramı uygulamada daha kağıt üzerinde anlamak daha kolay. Hiç bir Kullanıcıya ait olmayan telefon numaraları yok, yani o anlamda uzak PhoneRepository ve UserRepository telefonuyla ilgili yöntemler dahil olur? Cevabın Evet olduğunu varsayarak, önceki kod örneği yeniden yazmak için gidiyorum.

Telefon numaralarını döndüren UserRepository bir yöntem var mı? Ya da her zaman Kullanıcının telefon numaralarını almak için bir Kullanıcı için bir başvuru döndürmek ve ilişkiyi traverse gerekir:

List<Phone> phones = UserRepository.GetPhoneNumbers(userId);
// Or
User user = UserRepository.GetUserWithPhoneNumbers(userId); //this method will join to Phone

Ben telefon, ben onlardan modifiye varsayarak elde olan ne olursa olsun, onları nasıl güncelleme için ne yapmam gerekiyor? Benim sınırlı anlayış kök altında nesneleri seçim doğru beni idare ederlerdi kök, #1 Aşağıda güncellenmelidir. Ancak bu iş çok iyi olan Varlık Çerçevesi, bu gibi son derece un-açıklayıcı, çünkü okuma kodunu bilmiyorum ne olduğumu aslında güncelleme olsa da Varlık Çerçeve tutmak sekmesinde değişti nesneler içinde grafik.

UserRepository.Update(user);
// Or
UserRepository.UpdatePhone(phone);

Son olarak, gerçekten bir şey için bağlı olmayan bazı arama tabloları var varsayarak, *, *, ***9 8 10*gibi. Bırakın çıkışlar ya da ne olursa olsun başka bir nedenle doldurmak için kullanabilirim. Bu tek başına havuzları? CodesRepository gibi mantıksal gruplandırma/depo çeşit birleştirilebilir? Ya da en iyi uygulamalara karşı.

CEVAP
1 Mart 2011, Salı


Toplam Kök depo üzerinde örnek gayet iyi biliyorum.e makul olamaz herhangi bir varlık başka bir bağımlılık olmadan kendi depo olmamalı (büyük telefonunuzda). Bunu dikkate almadan hızlı bir şekilde db tabloları 1-1 eşleme Depolarında bir patlama ile kendinizi bulabilirsiniz.

Değişiklikler db geri ısrar gelince niyet etrafında biraz karışıklığa neden olduklarını düşünüyorum olarak veri değişiklikleri yerine depoları kendileri için Çalışmak desen Birimi kullanarak bakmak gerekir. EF bir çözüm İş Birimi aslında EF içeriğiniz arayüzü etrafında bir sarıcı.

Arama veri deposu ile ilgili olarak, biz sadece özel bir alan varlık (Ülkeler, Renkler, vb) ait olmayan bir veri sorumlu olur bir ReferenceDataRepository oluşturun.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Awesome Toys TV

    Awesome Toys

    18 HAZİRAN 2014
  • ipsy

    ipsy

    1 EKİM 2012
  • NicoleGrippo

    NicoleGrippo

    14 Kasım 2006