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")));
        }
    }
    
  • 相关阅读:
    SQL2014还原到2008
    SQL SERVER2014 安装 Error code 0x858C001B.
    c++builder XE7 C++11 C++0x 新语法
    c++Builder XE6 MD5 加密算法 BASE64 URL 编码
    手机新功能
    xe fmx 怎么改变button颜色
    XE6 任务栏 控件
    js里面return 和 return false的区别
    web.xml的contextConfigLocation作用及自动加载applicationContext.xml
    mybatis-config.xml配置
  • 原文地址:https://www.cnblogs.com/baily/p/9314431.html
Copyright © 2011-2022 走看看