0

关于主题,一些实体具有多重关系

我在学习中学到了所有这些,但是,是否有必要在 c# 编程中进行维护,例如在本示例中使用实体框架?:

http://www.asp.net/web-forms/tutorials/getting-started-with-ef/the-entity-framework-and-aspnet-getting-started-part-1

这是因为我对实体更新的工作原理感到困惑,例如级联以及为什么它很重要。

我发现将实体彼此独立编码更容易,尽管它们在现实生活中实际上是相关的,例如类别产品。

谁能在问题中简要说明 CRUD 如何处理这种关系?

4

1 回答 1

1

实体框架及其实体及其相互之间的关联为您提供了框架本身 - OR - 映射器 - 为您处理所有更新、删除和插入的优势。它负责维护实体和实体本身之间的关系。您“只”需要定义模型。

您总是可以走手动路线并自己编写所有代码。但在大多数情况下,定义实体及其属性和它们之间的关系并让实体框架或任何其他 OR-Mapper(如 nHibernater)处理所有这些,在开发速度、可维护性和一致性方面是一个巨大的优势。

如果您定义彼此分开的实体 - 换句话说,您不使用它们之间的关联 - 您无法从一个对象导航到另一个对象。请参阅示例:

示例 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 个查询中急切加载。定义了关联后,您可以选择是否加载相关实体eagerlylazy

一般来说,这是实体框架的一个很好的起点:http: //msdn.microsoft.com/en-us/library/bb386876.aspx

这是一个很好的概述实体之间的关系如何工作以及您有哪些选项:http: //msdn.microsoft.com/en-us/library/ee373856.aspx

于 2012-04-15T10:23:41.957 回答