Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将连接表映射到self_C#_Nhibernate_Fluent Nhibernate - Fatal编程技术网

C# 将连接表映射到self

C# 将连接表映射到self,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,我正在努力使用引用同一个表的连接表的映射。其想法是能够跟踪页面之间的所有链接 连接表: CREATE TABLE WikiPageLinks ( Page int NOT NULL, LinkedPage int NOT NULL ) 主表: CREATE TABLE WikiPages ( Id int NOT NULL IDENTITY, PageName nvarchar(50) NOT NULL, Title nvarchar(50) NO

我正在努力使用引用同一个表的连接表的映射。其想法是能够跟踪页面之间的所有链接

连接表:

CREATE TABLE WikiPageLinks (
    Page int NOT NULL, 
    LinkedPage int NOT NULL
)
主表:

CREATE TABLE WikiPages (
    Id int NOT NULL IDENTITY, 
    PageName nvarchar(50) NOT NULL, 
    Title nvarchar(50) NOT NULL, 
CONSTRAINT PK_WikiPages PRIMARY KEY (Id)
)
和类别:

public class WikiPage
{
    public virtual int Id { get; protected set; }
    public virtual IEnumerable<WikiPageLink> BackReferences {get;}
    public virtual IEnumerable<WikiPageLink> References {get; }
}
公共类维基页面
{
公共虚拟整数Id{get;protected set;}
公共虚拟IEnumerable反向引用{get;}
公共虚拟IEnumerable引用{get;}
}
  • BackReferences=当前页面是
    WikiPageLinks.LinkedPage
  • References=当前页面为
    WikiPageLinks.page

映射应该是什么样子?

如果链接中没有其他列,那么我会将其删除

public class WikiPage
{
    public virtual int Id { get; protected set; }
    public virtual IEnumerable<WikiPage> BackReferences { get; }
    public virtual IEnumerable<WikiPage> References { get; }
}

// WikiPageMap : ClassMap<WikiPage>
public WikiPageMap()
{
    ...
    HasManyToMany(wp => wp.References)
        .Table("WikiPageLinks")
        .ParentKeyColumn("parent_page_id")
        .ChildKeyColumn("referenced_page_id");

    HasManyToMany(wp => wp.BackReferences)
        .Table("WikiPageLinks")
        .ParentKeyColumn("referenced_page_id")
        .ChildKeyColumn("parent_page_id")
        .Inverse();

    ...
}
公共类维基页面
{
公共虚拟整数Id{get;protected set;}
公共虚拟IEnumerable反向引用{get;}
公共虚拟IEnumerable引用{get;}
}
//WikiPageMap:ClassMap
公共WikiPageMap()
{
...
HasManyToMany(wp=>wp.References)
.Table(“WikiPageLinks”)
.ParentKeyColumn(“父页面id”)
.ChildKeyColumn(“参考页面id”);
HasManyToMany(wp=>wp.BackReferences)
.Table(“WikiPageLinks”)
.ParentKeyColumn(“引用的页面id”)
.ChildKeyColumn(“父页面id”)
.Inverse();
...
}