3
我在映射nhibernate中的一個屬性時遇到了一些問題。我有一個映射到集合的多對多關係。不過,我也想將一個屬性映射到多對多集合的第一個元素。這裏是我的代碼: 類我映射:獲取多對多關係的第一個元素
public class Project {
public Project() {
this.Addresses = new List<Address>();
}
public virtual int ID { get; set; }
public virtual IList<Address> Addresses { get; set; }
public virtual Address CurrentAddress { get; set; }
}
的類映射:
public class ProjectMap : ClassMap<Project> {
public ProjectMap() {
Table("Project");
Id(x => x.ID).GeneratedBy.Identity();
HasManyToMany(x => x.Addresses)
.Table("ProjectAddress")
.ParentKeyColumn("ProjectID")
.ChildKeyColumn("AddressID").Cascade.All();
}
但我需要CurrentAddress指向地址屬性的第一要素。所以,我想與返回這樣的第一元素的吸氣劑,以解決這個問題:
public virtual Address CurrentAddress {
get {
if (!Addresses.Any()) {
Address newAddress = new Address();
this.Addresses.Add(newAddress);
return newAddress;
}
else {
return this.Addresses.First();
}
}
}
然而,當我嘗試查詢整個項目類currentaddress,我得到一個QueryException:無法解析屬性:CurrentAddress。
這很明顯是因爲CurrentAddress屬性沒有映射到Nhibernate中,但我該如何解決這個問題?
而且沒有辦法將它映射到多對多映射的第一個元素嗎? – 2012-08-16 10:23:51
我想不出一個簡單的方法來做到這一點。爲什麼不直接在查詢中使用'Addresses.First()'? – twoflower 2012-08-16 10:59:41