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
属性来定义列名称。