Я установил отношения многие ко многим, следуя беглому nhibernate Учебник по началу работы .
http://wiki.fluentnhibernate.org/images/2/24/FirstProjectSchema.png
Теперь я не уверен, как получить данные. Например, что произойдет, если я захочу получить все товары, которые есть в магазине.
Так что мне нужно будет использовать storeId на столе продуктов. Однако в таблице products нет storeId, и у меня нет класса, который на самом деле содержит сопоставления или свойства для StoreProduct.
Так что я не могу пойти
session.Query<StoreProduct>().Where(x => x.StoreId == "1").toList();
Так что мне нужно сделать объединение в Магазине и Продуктах, а затем сделать запрос по ним?
Редактировать
Вот разбавленная версия того, что у меня есть.
public class Student
{
public virtual Guid StudentId { get; private set; }
public virtual IList<Course> Courses { get; set; }
public virtual IList<Permission> Permissions{get; set;}
public Student()
{
Courses = new List<Course>();
Permissions = new List<Permission>();
}
public class StudentMap : ClassMap<Student>
{
public StudentMap()
{
Table("Students");
Id(x => x.StudentId).Column("StudentId");
HasManyToMany(x => x.Permissions).Table("PermissionLevel");
HasManyToMany(x => x.Courses).Table("PermissionLevel");
}
}
public class CourseMap : ClassMap<Course>
{
public CourseMap()
{
Table("Courses");
Id(x => x.CourseId).Column("CourseId");
HasManyToMany(x => x.Permissions ).Table("PermissionLevel");
HasManyToMany(x => x.Students).Table("PermissionLevel");
}
}
public class Course
{
public virtual int CourseId { get; private set; }
public virtual IList<Permission> Permissions { get; set; }
public virtual IList<Student> Students { get; set; }
public Course()
{
Permissions = new List<Permission>();
Students = new List<Student>();
}
}
public class PermissionMap : ClassMap<Permission>
{
public PermissionMap()
{
Table("Permissions");
Id(x => x.PermissionId).Column("PermissionId");
HasManyToMany(x => x.Students).Table("PermissionLevel");
}
}
public class Permission
{
public virtual int PermissionId { get; private set; }
public virtual IList<Student> Students {get; set;}
public Permission()
{
Students = new List<Student>();
}
}
var a = session.Query<Student>().Where(x => x.Email == email).FirstOrDefault();
var b = session.Get<Student>(a.StudentId).Courses;
ошибка, которую я получаю, когда смотрю в b.
не удалось инициализировать коллекцию:
[Student.Courses # 757f27a2-e997-44f8-b2c2-6c0fd6ee2c2f] [SQL:
ВЫБРАТЬ course0_.Student_id как
Student3_1_, courses0_.Course_id as
Course1_1_, course1_.CourseId as
CourseId2_0_, course1_.Prefix as
Prefix2_0_, course1_.BackgroundColor
as Backgrou3_2_0_ FROM PermissionLevel
курсы0_ оставил внешнее соединение Курсы
Course1_ on
courses0_.Course_id = course1_.CourseId
ГДЕ courses0_.Student_id =?] "