我需要检索大量实体图,在 UI 中对其进行操作(添加、更新、删除),然后将其全部保存回数据库。在各种 SO 问题和实验之后,我发现这种大规模的“分离图更新”方法非常有问题,所以我现在正在重新考虑我的方法。
它只是一个 2 层 WPF 应用程序,所以我现在正在考虑在用于操作实体图的 UI 期间存在一个长期运行的上下文 - 这样它就可以自动跟踪更改。但是我不确定如何在架构上解决这个问题。
该应用程序当前具有三个项目 - UI、业务层和一个用于 edmx 和生成的实体的项目。我的业务层有一个CustomerManager
类,它公开了一个检索客户图(订单、订单行等)的方法,以及一个持久化客户图的方法。假设 UI 保持CustomerManager
类的相同实例,因此保持相同的上下文,将跟踪对图形的更改(添加和更改实体)。
删除实体有点棘手,因为必须使用上下文来执行此操作,即:-
context.Set<Order>().Remove(orderToDelete);
真的在寻找一些建筑方面的建议。我只是DeleteOrder
在我的CustomerManager
类中公开一个这样做的方法吗?鉴于我有十几种其他实体类型,我可能需要公开类似的方法来删除订单、产品等。
UI 保持同一个CustomerManager
实例是一种明智的方法,还是有更好的方法来管理长期运行的上下文?该方法的逻辑位置DeleteOrder
将在我的客户实体(部分)类中,但由于这些类与业务层(上下文所在的位置)位于单独的项目中,我想我不能这样做(除非我将上下文传递给 DeleteOrder 方法)?