关于该主题,一些实体具有多重关系
我在学习中学到了所有这些,但是,是否有必要维护c#编程,例如在本例中使用Entity框架? :
这是因为我对实体的更新如何工作感到困惑,例如级联以及为什么它很重要。
我发现只是将实体彼此独立编码更容易,尽管它们在现实生活中实际上是相关的,例如类别产品。
有人能简要说明CRUD如何在问题中使用这种关系吗?
答案 0 :(得分:1)
实体框架及其实体及其彼此之间的关联为您提供了框架本身 - OR - Mapper - 为您处理所有更新,删除和插入的优势。它负责维护实体和实体本身之间的关系。你只需要定义模型。
您可以随时进入手动道路并自行编码。但在大多数情况下,定义实体及其属性和它们之间的关系,并使用Entity Framework或任何其他OR-Mapper(如nHibernater)来处理所有这些,在开发速度,可维护性和一致性方面是一个巨大的优势。 p>
如果您将实体彼此分开定义 - 换句话说,您不使用它们之间的关联 - 您无法从一个对象导航到另一个对象。参见示例:
示例a)定义了关联:
2个实体:order和orderitem 一个订单最多可包含n个订单商品。您可以从特定订单遍历/导航到所有关联的订单商品,例如
var myOrder = Repository.FindOrderById(15);
var orderItems = myorder.OrderItems;
示例b)没有定义关联:
2个实体:order和orderitem 如果没有定义关联,则无法从一个实体导航到另一个实体。您需要单独查询所有订单商品,例如
var myOrder = Respository.FindOrderById(15);
var orderItems = Repository.FindOrderItemsByOrder(15);
这并不是说如何加载实体。在示例b中,为了查询订单和相关订单项,OR-Mapper对数据库执行2次查询。在示例a中,您可以定义是否延迟加载 2个查询中的实体或1个查询中的 eager load 。定义关联后,您可以选择是否加载相关实体急切或懒惰。
这是实体框架的一个很好的起点: http://msdn.microsoft.com/en-us/library/bb386876.aspx
这是一个很好的概述实体之间的关系如何工作以及您有哪些选项: http://msdn.microsoft.com/en-us/library/ee373856.aspx