數據結構如下: 房子有很多房間。每個房間都有很多人。流利的NHibernate:我如何將這個查詢作爲條件來編寫?
我想要做的就是讓所有人都住一間房子。在普通的SQL中,我會寫出以下內容:
SELECT * FROM Person WHERE Room_id
IN
(SELECT Id FROM Room WHERE House_id = 1)
如何在Fluent NHibernate'ish代碼中編寫該代碼?
在這個例子中,我們可以假設實體和映射是這樣的:
家實體
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual IEnumerable<Room> Rooms { get; set; }
家測繪
Id(x => x.Id);
Map(x => x.Name);
HasMany(x => x.Rooms);
間實體
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual House House { get; set; }
public virtual IEnumerable<Person> Persons { get; set; }
間映射
Id(x => x.Id);
Map(x => x.Name);
References(x => x.House);
HasMany(x => x.Persons);
Person實體
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Room Room { get; set; }
Person的映射
Id(x => x.Id);
Map(x => x.Name);
References(x => x.Room);
這不是一個問題,通順 - 通順只對指定的映射和配置。根據您使用的NHibernate版本,您可以選擇HQL,Criteria API或(如果是NH3)Linq。 – UpTheCreek 2011-04-28 08:55:59
請問,你能展示你的實體和映射嗎? – 2011-04-28 09:30:32
@Jakub:完成。 @UpTheCreek:哪個解決方案看起來最漂亮?你可以給我一個例子嗎? – Awesome 2011-04-28 10:31:05