C# NHibernate.QueryException:无法解析属性-ID为的列名
当我尝试使用ICriteria执行下面的类时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
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();