我在流畅的休眠世界中与 HasManyToMany 方法作斗争。这是我的“数据库”应用程序。在这个数据库中,我有一些测试数据。现在我想通过查询方法询问数据库,哪个用户可以为应用程序使用什么。
这是我的模型类:
public class Application
{
public virtual int Id { get; protected set; }
public virtual string Name { get; set; }
public virtual IList<User> User { get; set; }
public Application()
{
User = new List<User>();
}
}
public class User
{
public virtual int Id { get; protected set; }
public virtual string Name { get; set; }
public virtual IList<Application> Application { get; set; }
public User()
{
Application = new List<Application>();
}
}
这是映射代码:
public class ApplicationMap : ClassMap<Application>
{
public ApplicationMap()
{
Id(x => x.Id);
Map(x => x.Name);
HasManyToMany(x => x.User)
.Table("Access")
.ParentKeyColumn("user_fk")
.ChildKeyColumn("id")
.Cascade.All();
}
}
public class UserMap : ClassMap<User>
{
public UserMap()
{
Id(x => x.Id);
Map(x => x.Name);
HasManyToMany(x => x.Application)
.Table("Access")
.ParentKeyColumn("application_fk")
.ChildKeyColumn("id")
.Cascade.All();
}
}
这是我的数据访问方法:
public static List<Application> SelectApplicationByUser(int userId) { var session = SessionManager.CurrentSession; return session.Query<Application>().Where(x => x.User.Any(y => y.Id == userId)).ToList(); }
现在我收到错误未知列用户 ID。有人可以给我一些刺激吗,我已经搜索了这么久并使用了很多方法,但没有任何效果。我的映射定义有什么问题?或者也许我的 Linq 语句也是错误的。谢谢