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 屬性來定義列名稱。