C# NHibernate.QueryException:无法解析属性-ID为的列名

C# NHibernate.QueryException:无法解析属性-ID为的列名,c#,nhibernate,exception,C#,Nhibernate,Exception,当我尝试使用ICriteria执行下面的类时 if (_userGroupId > 0 && _userId > 0 ) { return session.CreateCriteria(typeof(UserUserGroup)) .Add(Restrictions.Eq("UserGroupID", _userGroupId)) .Add(Restrictions.Eq("UserID", _userId

当我尝试使用ICriteria执行下面的类时

if (_userGroupId > 0 && _userId > 0 )
{
   return session.CreateCriteria(typeof(UserUserGroup))
             .Add(Restrictions.Eq("UserGroupID", _userGroupId))
               .Add(Restrictions.Eq("UserID", _userId))
               .Add(Restrictions.Eq("Deleted", false));
}
上课

public class UserUserGroup
{
    public virtual long UserUserGroupId { get; set; }
    public virtual long UserGroupId { get; set; }
    public virtual long UserId { get; set; }
    public virtual bool Deleted { get; set; }

    public UserUserGroup() {}

    public UserUserGroup(long userGroupId, long userId)
    {
        UserGroupId = userGroupId;
        UserId = userId;
    }

}
有了地图

public void Override(AutoMapping<UserUserGroup> mapping)
    {
        mapping.Id(map => map.UserUserGroupId, "UserUserGroupID").GeneratedBy.HiLo("hibernate_unique_key", "next_hi", "100", "tablename='UserUserGroups'");
        mapping.Map(map => map.UserId,"UserID").Nullable();
        mapping.Map(map => map.UserGroupId,"UserGroupID").Nullable();
        mapping.Map(map => map.Deleted,"Deleted").Nullable();
    }
public void覆盖(自动映射)
{
mapping.Id(map=>map.usergroupid,“usergroupid”).GeneratedBy.HiLo(“hibernate\u unique\u key”、“next\u hi”、“100”、“tablename='usergroups'”);
Map.Map(Map=>Map.UserId,“UserId”).Nullable();
Map.Map(Map=>Map.UserGroupId,“UserGroupId”).Nullable();
Map.Map(Map=>Map.Deleted,“Deleted”).Nullable();
}
它抛出异常

NHibernate.QueryException:无法解析属性:UserGroupID


如何解析属性?

不要在查询中指定列名,而是尝试使用类的属性标识符(末尾的小写字母):

为了避免将来出现此类问题,我建议您使用,它在编译时提供类型检查:

return session.QueryOver<UserUserGroup>()
              .Where(x => x.UserGroupId == _userGroupId)
              .And(x => x.UserId == _userId)
              .And(x => x.Deleted == false)
              .List();
return session.QueryOver()
.Where(x=>x.UserGroupId==\u UserGroupId)
.和(x=>x.UserId==\u UserId)
.和(x=>x.Deleted==false)
.List();

奇怪的是,字符串值在解析中很重要。只是把ID改成ID就行了。谢谢你及时的帮助。
return session.QueryOver<UserUserGroup>()
              .Where(x => x.UserGroupId == _userGroupId)
              .And(x => x.UserId == _userId)
              .And(x => x.Deleted == false)
              .List();