实体框架代码首先是循环引用

时间:2011-11-18 01:34:06

标签: asp.net-mvc entity-framework entity-framework-4.1 automapper

我想要一个对象来引用它自己。我该怎么写这个模型?例如。

public class Term
{
    public int TermId { get; set; }
    public string Name { get; set; }

    public virtual Term PreviousTerm { get; set; }
    public virtual int? PreviousTermId { get; set; }
}

生成的架构是:

TermId
Name
PreviousTermId
PreviousTerm_TermId

显然,PreviousTermId在这里没有任何目的作为FK的关系。

但是当使用automapper时,我必须映射到PreviousTermId,我无法创建新对象PreviousTerm并将Id分配给它。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

尝试在onModel OnModelCreating事件

中指定映射
  protected override void OnModelCreating(DbModelBuilder modelBuilder)
       {             
            modelBuilder.Entity<Term>().HasOptional(t =>t.PreviousTerm).WithMany().
                           HasForeignKey(t=>t.PreviousTermId);  
       }