代码之家  ›  专栏  ›  技术社区  ›  UpTheCreek

流利的Nhibernate:自指多对多

  •  3
  • UpTheCreek  · 技术社区  · 14 年前

    Public class Something
    {
        public int Id;
        public IList<Something> Similarthings { get; set; }
    }
    
    public class SomtehingMapping
        {
            public SomtehingMapping()
            {
                Map(x => x.Id);
                HasManyToMany(x => x.Similarthings )
                   .Table("SomethingsToSimilarthings")
                   .ParentKeyColumn("SomethingA_Id")
                   .ChildKeyColumn("SomethingB_Id")
                   .Cascade.All();
             }
    }
    

    你最后得到的是:

    Table SomethingsToSimilarthings
    -------------------------------
    SomethingA_Id    SomethingB_Id
    111              222
    222              111
    

    是否有任何方法可以定义此映射,以便仅使用一个数据库行来表示双向关系?

    1 回复  |  直到 14 年前
        1
  •  1
  •   tolism7    14 年前

    你试过设置 将属性映射到 真的 像那样?

    public class SomtehingMapping
        {
            public SomtehingMapping()
            {
                Map(x => x.Id);
                HasManyToMany(x => x.Similarthings )
                   .Inverse()
                   .Table("SomethingsToSimilarthings")
                   .ParentKeyColumn("SomethingA_Id")
                   .ChildKeyColumn("SomethingB_Id")
                   .Cascade.All();
             }
    }
    

    另一种方法是显式定义关联的另一面并将其标记为 inverse="true"