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