私は流暢なnhibernate Getting started tutorialに従うことによって、多対多の関係を作りました。多くの人から多くの人が流暢なnhibernateにレコードを取得していますか?
http://wiki.fluentnhibernate.org/images/2/24/FirstProjectSchema.png
今、私は、データを取得する方法がわからないです。たとえば、店が運ぶすべての商品を手に入れたいとしたらどうなりますか?
したがって、商品表でstoreIdを使用する必要があります。しかし、商品テーブルには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;
エラーが発生したときにエラーが発生します。 Course1_1_、course1_.CourseIdとして Student3_1_、courses0_.Course_idとして SELECT courses0_.Student_id: [Student.Courses#757f27a2-e997-44f8-b2c2-6c0fd6ee2c2f] [SQL:
は、コレクションを初期化できませんでした ようCourseId2_0_、course1_.Prefixは としてPrefix2_0_、course1_.BackgroundColor はBackgrou3_2_0_はPermissionLevel FROM courses0_は courses0_.Course_id = course1_.CourseId WHERE courses0_.Student_id =?]」
にコース course1_を外部結合を残したとして、
はどのように不完全ですか。私は両方のPermissionLevelテーブルを使用することはできません? – chobo2
@ chobo2マッピングに存在するコレクション権限がありません。このコードによれば、行HasManyToMany(x => x.Permissions).Table( "PermissionLevel"); 'はコンパイルしないでください – gor
ああ例をコピーするときに間違って削除しました。 – chobo2