【发布时间】:2011-08-16 08:25:18
【问题描述】:
我有一个讨论对象,它本身有一个 ParentDiscussion 和 TopParentDiscussion:
public class Discussion
{
[Key]
public Guid ID { get; set; }
public String Message { get; set; }
public virtual Discussion ParentDiscussion { get; set; }
public virtual Discussion TopParentDiscussion { get; set; }
}
Parent 和 TopParent 都是可选的。我使用 Fluent API 编写了以下情况,并且可以正常工作。
modelBuilder.Entity<Discussion>().HasOptional<Discussion>(a => a.ParentDiscussion).WithOptionalDependent().Map(a => a.MapKey("TopParentId"));
modelBuilder.Entity<Discussion>().HasOptional<Discussion>(a => a.TopParentDiscussion).WithOptionalDependent().Map(a => a.MapKey("ParentId"));
但是如果没有流利的 api,我该如何编写这个解决方案,所以要使用数据注释。
我试过了:
//Foreign Keys
public Guid? ParentId { get; set; }
public Guid? TopParentId { get; set; }
//Relationships
[ForeignKey("ParentId")]
public virtual Discussion ParentDiscussion { get; set; }
[ForeignKey("TopParentId")]
public virtual Discussion TopParentDiscussion { get; set; }
但它给了我以下错误:
Unable to determine the principal end of an association between the types 'Model.Discussion' and 'Model.Discussion'. The principal end of this association must be explicitly configured using either the relationship fluent API or data annotations.
【问题讨论】:
标签: entity-framework entity-framework-4.1 fluent-interface