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();
...
}