Fluent NHibernate を使用して、非常に基本的な親子関係をマッピングしようとしています。ただし、SQL を分析すると、親の INSERT ステートメントのみが作成されます。
シチュエーションは、他のクラスのリストを持つ単純なクラスです。親へのリレーションは必要ありません。親が挿入/更新されたときに、子を挿入/更新する必要があります。
var room = new Room(); room.Name = "Room1"; room.Courses.Add(new Course(){ Name = "Course1"}); room.Courses.Add(new Course(){ Name = "Course2"}); using (var session = sessionFactory.OpenStatelessSession()) { using (var transaction = session.BeginTransaction()) { session.Insert(room); transaction.Commit(); } }
マッピングはこんな感じ。
public class RoomMapping : ClassMap<Room> { public RoomMapping() { Table("Rooms"); Id(x => x.Id) .GeneratedBy.SeqHiLo("seq_rooms", "1000"); Map(x => x.Name); HasMany(x => x.Courses) .Cascade.All(); } } public class CourseMap : ClassMap<Course> { public CourseMap() { Table("Courses"); Id(x => x.Id) .GeneratedBy.SeqHiLo("seq_courses", "1000"); Map(x => x.Name); } }
私はすでに HasMany の複数のオプションを試しましたが、成功しませんでした。