SORU
30 HAZİRAN 2009, Salı


=False Arabiriminin / ters kullanma OneToMany ilişki Hazırda?

Hazırda Beklet. ters özniteliği ile kulpları almak için çalışıyorum, ve kavramsal olarak zor şeylerden biri gibi görünüyor.

Ben özet bir üst varlık (örneğin Üst) varsa o Çocuk nesneleri kullanarak bir koleksiyona sahiptirbir-çok=eşleme söyler gerçek bu eşleme ayarı ters Hazırda Beklet. diğer tarafa (Çocuk) kendisi tablosunda yabancı anahtar referansı korumak güncellemek için sorumluluğu vardır.

Bunu görünür yapmak zorunda 2 faydaları gelince ekleyerek Çocuklar için toplama kodunuzu ve zaman tasarrufu, anne-babası ile cascade-tüm set): you save an unneccessary hit on the database (çünkü olmadan ters ayarlamak, Hazırda düşünüyor. " iki yerler için güncelleme FK ilişkisi), ve göre resmi dokümanlar:

Bir sütun varsa dernek bildirildi BOŞ DEĞİL, Arabiriminin neden olabilir kısıtlama oluşturduğunda ihlalleri ya da güncellemeleri Derneği. Önlemek için bu sorun, kullanmalısınız bu çift yönlü bir dernek çok değerli bir son (veya torba) ters olarak="". doğru işaretlenmiş

Bu anlamda şimdiye kadar yapmak gibi görünüyor. Anlamadığım şey şu: ne zaman istiyorsunuzDEĞİL=doğru ters kullanmak için bir-çok bir ilişki istiyorsun?

CEVAP
1 Temmuz 2009, ÇARŞAMBA


Matthieu olarak diyor ki, tek dava nerede istemeyiz set ters = gerçek olduğu yer çok mantıksız çocuk için sorumlu güncellenmesi kendisi gibi durumda çocuğun hiçbir bilgisi üst.

Dene gerçek dünya, ve hiç yapmacık örnek:

<class name="SpyMaster" table="SpyMaster" lazy="true">
  <id name="Id">
    <generator class="identity"/>
  </id>
  <property name="Name"/>
  <set name="Spies" table="Spy" cascade="save-update">
    <key column="SpyMasterId"/>
    <one-to-many class="Spy"/>
  </set>
</class>

<class name="Spy" table="Spy" lazy="true">
  <id name="Id">
    <generator class="identity"/>
  </id>
  <property name="Name"/>
</class>

Spymasters Casuslar olabilir, ama Casuslar casus sınıfta çok-bir ilişki dahil değil çünkü onların spymaster kim olduğunu biliyorum asla. Ayrıca (uygun) bir ajan haydut dönüşebilir ve bu yüzden bir spymaster ile ilişkili olması gerekmez. Aşağıdaki gibidir: varlıklar yaratabiliriz

var sm = new SpyMaster
{
    Name = "Head of Operation Treadstone"
};
sm.Spies.Add(new Spy
{
    Name = "Bourne",
    //SpyMaster = sm // Can't do this
});
session.Save(sm);

Böyle bir durumda olurdun set FK sütun için null çünkü Kanunun tasarrufu sm olur Ekle içine SpyMaster tablo ve Casus masa, ve ancak bundan sonra ki güncelleme, Casus masa set FK. Eğer ters ayarlamak olsaydık bu durumda, = doğru, FK hiç güncelleme alın.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • filmurfreakur

    filmurfreaku

    29 Mart 2007
  • Phymec

    Phymec

    18 Temmuz 2009
  • Tech4Geeks

    Tech4Geeks

    8 Ocak 2012