1

NHibernate'i benim nesneyi desteklemek için, nesnel bir ilişki ile çoktan çoğa harita nasıl yapılandırılacağı hakkında bir yanıt aramak.Fluent NHibernate nesne eşleştirmesi ilişkisel eşleştirmesi

Diğer Kişilerle ilişkilerde bulunan Kişiler: s. Her ilişkide sahip oldukları ilişkiyi belirten bir özellik vardır. Bir RDB'de, bu, bu tabloda belirtilen ilişki tipi ile çoktan çoğa bir tablo kullanılarak yapılır, daha sonra, örneğin daha "yakın arkadaş" ve "kemer düşmanı".

<IList>Person myEnemies = myPerson.getRelatedPersons(relationType.Enemy) 

veya

<IList>Person myFriends = myPerson.getRelatedPersons(relationType.Friend) 

Başka bir (daha az uzayabilir) çözeltisi statik olacaktır

I tipteki bütün ilgili Kişiler dönmek için bir Kişi nesnesi sorgu ya da mümkün istiyorum sınıf başka hangi ilişkilerin var olduğunu belirtir:

Şu anda , numaralı bir "Kişi" tablosunun yanı sıra bir "PersonPerson" tablosuna sahip eski bir veritabanı kullanmalıdır. "PersonPerson" tablosu ilişki türünü bir tamsayı olarak tutar.

I (akıcı) NHibernate ile haritalama aşağıda başarı olmadan bu kadar ...

// How to specify type=1 here? 
HasManyToMany(x => x.Friends).WithTableName("Person_Person"); 

// How to specify type=2 here? 
HasManyToMany(x => x.Enemies).WithTableName("Person_Person"); 

Herhangi bir ipucu/solüsyon böyle bu kullanarak sözdizimi yapmaya çalışıyor ettik?

BR

/Jens

cevap

1

bir miras eşleştirmeyi araştırmak gerekir, ama o dahil ekstra tabloda çalışmak istiyorum emin değilim gibi seslerin konuşan ilk örnek.

İkinci örnekte, yalnızca Where yan tümcesini kullanabilmeniz gerekir.

HasManyToMany(x => x.Friends) 
    .WithTableName("Person_Person") 
    .Where("type = 2"); 
+0

Great! İlk davayı desteklemek için yeni bir "RelatedPerson" sınıfı eklemem gerektiğini düşünüyorum. /J – JensJ