zoukankan      html  css  js  c++  java
  • NHibernate 基于 ClassMapping 的 ManyToMany(多对多配置)

    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")));
        }
    }
    
  • 相关阅读:
    单调队列
    Johnson全源最短路
    重链剖分
    矩阵快速幂
    Tarjan
    题解 UVA439 骑士的移动 Knight Moves
    题解 SP10500 HAYBALE
    题解 P4058 [Code+#1]木材
    题解 P3395 路障
    题解 SP24 FCTRL2
  • 原文地址:https://www.cnblogs.com/baily/p/9314431.html
Copyright © 2011-2022 走看看