InverseProperty(字符串)属性

using System.ComponentModel.DataAnnotations.Schema;

public class Department  
{  
    ...

    public virtual ICollection<Employee> PrimaryEmployees { get; set; }  
    public virtual ICollection<Employee> SecondaryEmployees { get; set; }  
}  
  
public class Employee  
{  
    ...

    [InverseProperty("PrimaryEmployees")]  
    public virtual Department PrimaryDepartment { get; set; }  
  
    [InverseProperty("SecondaryEmployees")]  
    public virtual Department SecondaryDepartment { get; set; }  
}  

InverseProperty 可以用来识别双向时,关系双向两个实体之间存在的关系。

它告诉实体框架它应该与另一侧的属性匹配哪些导航属性。

当两个实体之间存在多个双向关系时,实体框架不知道哪个导航属性映射与另一侧的属性。

它需要相关类中相应导航属性的名称作为其参数。

这也可以用于与相同类型的其他实体有关系的实体,形成递归关系。

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

public class TreeNode
{
    [Key]
    public int ID { get; set; }
    public int ParentID { get; set; }

    ...

    [ForeignKey("ParentID")]
    public TreeNode ParentNode { get; set; }
    [InverseProperty("ParentNode")]
    public virtual ICollection<TreeNode> ChildNodes { get; set; }
}

另请注意,使用 ForeignKey 属性指定用于表上外键的列。在第一个示例中,Employee 类上的两个属性可能已应用 ForeignKey 属性来定义列名称。