添加到数据库时的EF关系

时间:2014-07-31 15:39:34

标签: entity-framework

添加到数据库时,我对实体框架中的关系有疑问。

我有以下图层

  • 网络应用
  • 服务层
  • 存储库
  • 数据层

假设我有这些实体

这些实体互相引用。 在我的服务层中,我获得了课程实体和部门实体。 然后我做了类似的事情:

    Course.Department = department;
    Unitofwork.CourseSet.Add(Course);
    Unitofwork.SaveChanges();

我的问题是: 我是否还需要将部门实体添加到上下文中?

因为即使我没有将部门添加到DepartmentSet,它仍然被添加到数据库中。 关于何时添加到上下文以及何时不必要

,是否存在某种类型的规则

希望有人可以提供帮助

1 个答案:

答案 0 :(得分:2)

您无需单独添加相关实体,因为EF可以自动检测到这些实体。

此外,即使您单独添加它,也不会产生任何影响,因为相关实体已经(内部)已经附加到Context并且其状态已经设置为“已添加”。

您正在寻找的“规则”非常简单:如果它不是“根”实体的一部分,则必须单独添加。

P.S:插入/添加方案都是如此。更新/编辑方案(来自分离实体)更复杂,通常不会检测到相关实体的更改。