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")));
        }
    }
    
  • 相关阅读:
    我为何看到你的提问不想回答?关于如何提问的一些看法
    零基础一步一步pytorch实现Logistic regression逻辑回归编程教程
    numpy与pytorch实现梯度下降,实现一个简单的两层神经网络
    [ubuntu]Gedit修改文件后提示无法创建备份文件同时不能保存修改过后的文件
    【测绘】高速公路中线放样
    【GDAL】图像处理三:图像平滑(一)
    【GDAL】图像处理二:初级图像读取,操作,存储。
    【GDAL】图像处理一:GDAL1.9.2在vs2010旗舰版中的配置
    【openCV】openCV2.4.8在vs2010旗舰版中的配置
    【c++】大数相加
  • 原文地址:https://www.cnblogs.com/baily/p/9314431.html
Copyright © 2011-2022 走看看