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")));
    }
}

转载于:https://www.cnblogs.com/baily/p/9314431.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值