使用Code First的关系

时间:2014-01-14 16:53:55

标签: c# entity-framework relationships

我正在使用ASP.net MVC,我已经简化但是制作了以下模型

public class Employee
{
   public int Id { get; set; }
   public string EmpName { get; set; }
}

public class Customer
{
   public int Id { get; set; }
   public string CusName { get; set; }
}

public class Task
{
   public int Id { get; set; }
   public DateTime StartDate{ get; set; }
   public DateTime? EndDate{ get; set; }
}

员工可以有很多任务。 任务可以有很多员工(但只能在任何时候) 客户可以拥有多项任务

我正在努力的是能够在任务开始或结束时记录,但是当Employee和Task之间的关系开始和结束并且新的Employee开始时。我知道我需要一个历史实体,但我想不出我会怎么记录这个。顺便说一下,如果任务从客户的角度结束,那么员工和任务之间的关系就会自动结束。

一如既往地谢谢你。如果任何人有关于EF的好书或视频教程的任何指针都可以处理这种关系,那将非常感激。

1 个答案:

答案 0 :(得分:1)

我的方法是将CustomerId和EmployeeId添加到Task。然后我会创建一个存储库并添加一个save方法。或者,您可以在上下文中override the SaveChanges method,但我不建议这样做。无论哪种方式,您的save方法只需要检查实体是否已存在于数据库中,如果存在,则CustomerId或EmployeeId是否已从当前存在更改。如果它已更改,您可以向历史记录实体添加新条目或执行您需要的任何操作。只需确保将更改保存到任务中。