nhibernateでプロパティの1つをマッピングする際に問題が発生しました。コレクションにマッピングされた多対多の関係があります。ただし、プロパティを多対多コレクションの最初の要素にマップすることも必要です。これが私のコードです:私がマッピングしているクラス:
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();
}
ただし、Addressesプロパティの最初の要素を指すようにCurrentAddressが必要です。そこで、次のような最初の要素を返すゲッターを使用してこれを解決しようとしました。
public virtual Address CurrentAddress {
get {
if (!Addresses.Any()) {
Address newAddress = new Address();
this.Addresses.Add(newAddress);
return newAddress;
}
else {
return this.Addresses.First();
}
}
}
ただし、Projectクラスcurrentaddressをクエリしようとすると、QueryException:could not resolve property:CurrentAddressが発生します。
これは明らかにCurrentAddressプロパティがNhibernateにマップされていないためですが、どうすればこれを修正できますか?