回答

1

假设你想创建一个自参照实体,我假设你有一个Product类像这样:

public class Product 
{ 
    public int Id { get; set; } 

    public int? ParentId { get; set; } 

    public virtual Product Parent { get; set; } 
} 

在上下文,你需要实现OnModelCreating方法,以配置自我参考。

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Product>(). 
     HasOptional(e => e.Parent). 
     WithMany(). 
     HasForeignKey(m => m.ParentId); 
} 
+0

其实我试过了。它会导致另一个错误:导航属性'Parent'不是'Product'类型的声明属性。验证它是否未明确从模型中排除,并且它是有效的导航属性。 有什么建议吗? – 2015-01-15 18:48:53

+0

它适用于我在我的答案中显示的相同产品类的情况。你是否以同样的方式声明了Parent属性? – octavioccl 2015-01-15 19:29:42

+0

Hello @ChrisKlingsater,我看到你发布了一个关于该问题的新问题,你是否通过Parent属性删除了外键属性?尽量不要将Fluent Api与Data Annotations合并,这不是一个好的做法 – octavioccl 2015-01-15 20:44:00