Failed to resolve property: Id

The following error message appears:

NHibernate.HibernateException: NHibernate.HibernateException: Unable to resolve property: Id.

This error is derived from the following line of code:

User userFound = session.QueryOver<User>()
                   .Where(x => x.Id == testObjects.TestUser.Id)
                   .SingleOrDefault();

My reduction in abbreviations is as follows:

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);
    }
}

I was able to query the User object before adding this relationship to Location, so I know that it has something to do with it, but I'm not sure what exactly. I can successfully create an object Userbound to Location, but I cannot request it. Use ISession.Getleads to the same error as the above QueryOver statement.

The following is a general unit test run that does not work:

    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);
        }
    }
+3
source share
2 answers

, PropertyRef. . , Id, ID Id. , :

HasOne(x => x.UserLocation)
        .PropertyRef(x => x.Id)
        .Cascade.All();

HasOne(x => x.UserLocation)
        .Cascade.All();

HasOne(x => x.User)
        .PropertyRef(x => x.Id);

HasOne(x => x.User)
+5

PropertyRef maps to property-ref - , "--", .

, , , PropertyRef.., Nhibernates Id of UserLocation, . , , .

, .

+2

All Articles