实体框架代码优先-外键数组

本文关键字:数组 框架 代码 实体 | 更新日期: 2023-09-27 17:59:18

我有一个带有其他实体列表的实体
其他实体是"只读的",仅仅是一个关联
这意味着实体应该只有一个其他实体id的列表,而不是更多
我该如何实现这一点,以便以后可以拥有尽可能简单的更新图?

 public class Worker
 {
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    public string Name { get; set; }
    public double Age { get; set; }
    public int? ManagerID { get; set; }
    [ForeignKey("ManagerID")]
    public virtual Worker Manager { get; set; }
    /// <summary>
    /// This is just an association to the tasks. 
    /// An update graph should ignore the entity itself since 
    /// the task is immutable in this context!!!
    /// </summary>
    public virtual ICollection<Task> AssignedTasks { get; set; }
}
public class Task
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    public string TaskName { get; set; }
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }
    /// <summary>
    /// This is just an association to the workers. 
    /// An update graph should ignore the entity itself 
    /// since the worker is immutable in this context!!!
    /// </summary>
    public virtual ICollection<Worker> AssignedWorkers { get; set; }
}

我只需要实体ids。。。但是集合是用来构建数据库模式的。。。

在上面的例子中-在更新时,工人只需要更新分配给他的任务ID,而不是他们的整个数据

实体框架代码优先-外键数组

您可以将实体的实际列表标记为私有虚拟。这将防止外部访问。然后创建id列表作为在实体列表上执行.Select(e => e.Id)的属性。实体列表只能从父实体内部进行修改。