2009-03-03 13 views
2

İki yönlü A'dan B'ye, tek yönlü bir ilişkisi olan iki öğe var. (A, bir B'ye sahiptir) Veritabanında bunlar, ATable ve BTable tarafından temsil edilir ve ABTable tarafından birlikte bağlanır. (Veri tabanı kurulumundan, çoktan çoğa bir ilişki var gibi görünmektedir, fakat yoktur, normalleştirme nedenleriyle bu şekilde yapılmıştır).Nhibernate: One-To-One olarak Eşleştirilecek Çoktan-Çok İlişkilendirin

Sorun, bu kurulumdan kaynaklanıyor, yalnızca NHibernate'i varlıklar arasında çoktan çoğa ilişkisi olarak haritalayabildim. Zaten varlıklar bire bir ilişki var mı?

Düşünebildiğim en iyi şey, onun çok fazla ilişkiye sahip olması ve daha sonra eşleştirmeyi tatmin edecek bir B Listesi döndüren A öğesi üzerinde iki özelliğe sahip olmasıdır. Uygulamamı tatmin etmek için listeden ilk B'yi alacak olan özellik. - ama bu uygun değil gibi görünüyor.

cevap

0

join-table'u one-to-one eşleştirmelerini çeşitli yollarla birleştirmeyi deneyebilirsiniz. Bir join-table eşlemesi, bire-bir ilişkiye sahip olan birden fazla tablonun tek bir sınıfa dayandırılmasına izin verir.

1

Bire bir demek istediğinden emin misiniz? Bir çok insanın really mean many-to-one's numaralı telefondan istediklerini sordum.

Her neyse, şemanızı değiştirmenin kısa bir yolu, önerdiğiniz şey en kolay şey; Ancak, biraz daha temiz hale getirmek için koleksiyonları özel yapabilirsiniz, böylece yalnızca ilk öğeyi getiren iki özelliği gösterebilirsiniz. wiki'daki özel özellikleri eşleştirmek için Fluent NHibernate'de various methods'u görebilirsiniz.

+0

Evet, birebir A'nın bir B'ye sahip olduğundan emin olun, her B yalnızca bir tane ile ilişkilendirilebilir. Özel koleksiyonlarda iyi çağrı, eşlenmiş özelliklerin özel olabileceğinin farkında değildim. – Dan