標籤:lib set virt ssm lse rar nat tor int
NHibernate 基於 ClassMapping 的 ManyToMany(多對多配置)實體類
public class Library{ public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual IList<Book> Books { get; set; } public Library() { Books = new List<Book>(); }}public class Book{ public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual IList<Library> Libraries { get; set; } public virtual IList<BookLevel> BookLevel { get; set; } public Book() { Libraries = new List<Library>(); BookLevel = new List<BookLevel>(); }}public class BookLevel{ public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual IList<Book> Book { get; set; } public BookLevel() { Book = new List<Book>(); }}
ClassMapping 映射類
public class LibraryMap : ClassMapping<Library>{ public LibraryMap() { Lazy(false); Table("Library"); Id(l => l.Id,map => { map.Column("id"); map.Generator(Generators.Identity); }); Property(x => x.Name, map => map.Column("LibraryName")); this.Bag(x => x.Books, map => { map.Table("Book_Library"); map.Cascade(Cascade.All); map.Inverse(false); map.Lazy(CollectionLazy.Lazy); map.Key(key => key.Column("LibraryId")); }, m => m.ManyToMany(x => x.Column("BookId"))); }}public class BookMap : ClassMapping<Book>{ public BookMap() { Lazy(false); Table("Book"); Id(l => l.Id, map => { map.Column("id"); map.Generator(Generators.Identity); }); Property(x => x.Name, map => map.Column("BookName")); this.Bag(x => x.Libraries, map => { map.Table("Book_Library"); map.Cascade(Cascade.All); map.Inverse(false); map.Lazy(CollectionLazy.Lazy); map.Key(key => key.Column("BookId")); }, m => m.ManyToMany(x=>x.Column("LibraryId"))); this.Bag(x => x.BookLevel, map => { map.Table("Book_Level"); map.Cascade(Cascade.All); map.Inverse(false); map.Lazy(CollectionLazy.Lazy); map.Key(key => key.Column("BookId")); }, m => m.ManyToMany(x => x.Column("LevelId"))); }}public class BookLevelMap : ClassMapping<BookLevel>{ public BookLevelMap() { Lazy(false); Table("BookLevel"); Id(l => l.Id, map => { map.Column("id"); map.Generator(Generators.Identity); }); Property(x => x.Name, map => map.Column("LevelName")); this.Bag(x => x.Book, map => { map.Table("Book_Level"); map.Cascade(Cascade.All); map.Inverse(false); map.Lazy(CollectionLazy.Lazy); map.Key(key => key.Column("LevelId")); }, m => m.ManyToMany(x => x.Column("BookId"))); }}
NHibernate 基於 ClassMapping 的 ManyToMany(多對多配置)