我正在努力使用引用同一个表的联结表的映射。我们的想法是能够跟踪页面之间的所有链接。
接合表:
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; }
}
WikiPageLinks .LinkedPage
WikiPageLinks.Page
映射应该如何?
答案 0 :(得分:1)
如果链接中没有其他列,那么我会将其删除
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();
...
}