EF 4.1 Code First - 自我引用外键和外键到其他表

时间:2011-06-24 11:13:06

标签: entity-framework foreign-keys entity-framework-4.1

我有一个POCO课程如下

public class Category 
{ 
   public int ID {get; set; }
   public string desc {get; set; }
   public int parentID {et; set; }
}

public class Issue 
{
   public int ID {get; set;}
   ....
   public int categoryID {get; set; }
   public int subCategoryID {get; set; }

   public virtual Category category{get; set; }
   public virtual Category subCategory {get; set;}
}

我一直在使用上述类的外键出错。基本上,我的Category表包含子类别的类别。一个问题可以有一个category和subCategory。有人会引导我找到定义这种关系的正确方法吗?我尝试过使用外键注释,但它给出了一个错误,说明数据库已创建,但由于在Issue上指定了外键关系,对象创建失败。有什么想法吗?我能做些什么来解决这个问题?

2 个答案:

答案 0 :(得分:4)

请参阅此文章 - How to Configure a Self Referencing Entity in Code First

我相信这会帮助您正确设置关系。正如您将在文章中看到的那样,您需要在DbContext类的OnModelCreating方法中定义一些附加的流畅设置。

答案 1 :(得分:2)

你可以用一个班级来完成这个。

首先,对于EF4.1代码,我有以下示例:

/// <summary>
/// represents a single configuration item within CM
/// </summary>
public class CI
{
    [Key]
    public int ID { get; set; }

    ....

    [ForeignKey("Parent")]
    public int? Parent_ID { get; set; }




    [InverseProperty("Parent")]
    [ForeignKey("Parent_ID")]
    public virtual ICollection<CI> Contents { get; set; }


    [InverseProperty("Contents")]
    public virtual CI Parent { get; set; }