У меня есть объект обсуждения, который сам по себе имеет 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.