映射在這種情況下(屬性類型是相同實體)是一個簡單的/標準參考映射。你可以看看這裏的更多詳細信息:Fluent mapping
參考/多到一個:
...
References(x => x.VisibilityField);
就是這樣。在這種情況下,通常可以指出父母子女關係。所以,不僅是你的DEField
引用本身爲VisibilityField
,但它也應該知道(從視VisibilityField
點)誰是引用它。 1)家長參考和2)兒童集合:
public abstract class DEField : EntityWithSerializableId
{
public virtual Boolean IsVisibilityDepended { get; set; }
public virtual String VisibilityExpression { get; set; }
public virtual DEField VisibilityField { get; set; } // Parent
public virtual IList<DEField> ChildFields { get; set; } // Children
}
,有點更復雜的映射,然後例子看起來是這樣的:
public class DEFieldMap : ClassMap<DEField>
{
public DEFieldMap()
{
Table("DEFieldTable");
LazyLoad();
Id(x => x.Id)
.Column("Id")
.Not.Nullable()
.GeneratedBy.Identity();
Map(x => x.IsVisibilityDepended);
Map(x => x.VisibilityExpression);
References(x => x.VisibilityField)
.Class<DEField>()
.Access.Property()
.Cascade.None()
.LazyLoad()
.Column("ParentId");
HasMany<DEField>(x => x.ChildFields) // Children
.Access.Property()
.AsBag()
.Cascade.None()
.LazyLoad()
.Inverse()
.KeyColumn("ParentId");
}
}