【问题标题】:Relationships using CodeFirst使用 CodeFirst 的关系
【发布时间】:2014-01-14 16:53:54
【问题描述】:

我正在使用 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; }
}

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

我正在努力记录的不是任务开始或结束的时间,而是员工与任务之间的关系开始和结束以及新员工开始的时间。我知道我需要一个历史实体,但我想不出我将如何记录它。顺便说一句,如果从客户的角度来看任务结束,那么员工和任务之间的关系就会自动结束。

一如既往地感谢您。如果有人有任何关于 EF 处理这种关系的好书或视频教程的指针,将不胜感激。

【问题讨论】:

    标签: c# entity-framework relationships


    【解决方案1】:

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

    【讨论】:

    • 谢谢。我无法思考这种关系。困难的时候。删除用户后,会在历史数据库中创建他们的新实例。容易!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 2015-10-18
    • 2013-10-31
    相关资源
    最近更新 更多