这是Drops Table的流畅地图
this.Table("Drops");
this.LazyLoad();
this.Id(x => x.Guid).GeneratedBy.Guid().Column("Guid");
this.References(x => x.User).column("UserGuid");
this.Map(x => x.FromLocation).Column("FromLocation").Not.Nullable().Length(50);
this.Map(x => x.ToLocation).Column("ToLocation").Not.Nullable().Length(50);
this.Map(x => x.Time).Column("Time").Not.Nullable();
这是我的用户表
this.Table("Users");
this.LazyLoad();
this.Id(x => x.Guid).GeneratedBy.Guid();
this.Map(x => x.SessionId).Unique().Column("SessionId");
this.Map(x => x.UserName).Unique().Column("UserName");
this.Map(x => x.Password).Column("Password");
this.Map(x => x.NickName).Column("NickName");
this.Map(x => x.FirstName).Column("FirstName");
this.Map(x => x.LastName).Column("LastName");
this.Map(x => x.Gender).Column("Gender");
因此,Drops包括User表,
当我添加drop table时,它会正确添加。
我需要的是,我需要使用用户SessionId获取drop对象列表。
我使用下面的代码来获取drop collection,
session.QueryOver<Drop>().Where(d => d.UserGuid != user.Guid).List();
但我收到了错误,
无法解析属性:UserGuid: ********* **********。BusinessObjects.Drop
我检查了删除表,添加了UserGuid列
如何获取下拉列表或问题是什么?
谢谢,
答案 0 :(得分:1)
不应该是:
session.QueryOver<Drop>().Where(d => d.User.SessionId != user.SessionId).List();
如果您按用户会话ID查找(或在您的情况下将其排除)。
修改强>
抱歉,我对初始点感到非常不满,因为我错过了你需要为用户对象定义别名的事实。尝试:
User alias = null;
session.QueryOver<Drop>().JoinAlias(d=>d.User,()=>alias).Where(d => alias.SessionId != user.SessionId).List();