次のエラーメッセージが表示されます。
NHibernate.HibernateException: NHibernate.HibernateException: Unable to resolve property: Id.
このエラーは、次のコード行からスローされます。
User userFound = session.QueryOver<User>()
.Where(x => x.Id == testObjects.TestUser.Id)
.SingleOrDefault();
私の省略されたマッピングは次のとおりです。
public class UserMap : ClassMap<User>
{
public UserMap()
{
Table("USER_HEADER");
Id(x => x.Id, "USER_ID")
.GeneratedBy.Foreign("UserLocation");
HasOne(x => x.UserLocation)
.PropertyRef(x => x.Id)
.Cascade.All();
}
}
public class LocationMap : ClassMap<Location>
{
public LocationMap()
{
Table("LOC_HEADER");
Id(x => x.Id, "LOC_ID");
HasOne(x => x.User)
.PropertyRef(x => x.Id);
}
}
この関係を追加する前にUserオブジェクトをクエリできたLocation
ので、それと関係があることはわかっていますが、正確にはわかりません。User
に関連付けられているオブジェクトを正常に作成できLocation
ますが、クエリはできません。を使用ISession.Get
すると、上記のQueryOverステートメントと同じエラーが発生します。
以下は、私が実行している、失敗している全体的な単体テストです。
public void Can_Create_User()
{
using (NHibernate.ISession session = SessionFactory.GetCurrentSession())
{
using (NHibernate.ITransaction tran = session.BeginTransaction())
{
session.Save(testObjects.TestValidationDetail);
session.Save(testObjects.TestUser);
tran.Commit();
}
}
using (NHibernate.ISession session = SessionFactory.GetCurrentSession())
{
User userFound = session.QueryOver<User>().Where(x => x.Id == testObjects.TestUser.Id).SingleOrDefault();
Assert.IsNotNull(userFound);
Assert.AreEqual(userFound.Id, userFound.UserLocation.Id);
}
}