0

我有一个类似于 4 个步骤的向导的网站。该站点由asp.net web 表单实现。该向导尝试构建和对象并将其添加到数据库。对象图如下:

class A { B bObject ; C cObject ; D dObject}
class B {} ; class C{}; class D{};

对象 b、c、d 在向导步骤期间从数据库中获取并填充到 A 中。如您所知,b、c、d 是通过不同的上下文从数据库中获取的。当我进入将 A 保存到 DB 的最后一步时,上下文将 b,c,d 识别为新对象,而不仅仅是未修改,因此仅链接它们,因为它们来自不同的上下文。

有什么建议可以用一种干净的方式解决这个问题吗?

由于帖子包而导致的不同上下文。

4

1 回答 1

1

这是最佳答案是“不要那样!”的情况之一。

处理此问题的一种方法是让向导步骤从用户那里收集创建数据库表所需的所有数据,并将数据保存在会话状态中。只有在执行最后一个向导步骤时,您才会从会话状态中获取数据并使用它来创建 EF 实体,然后保存更改,所有这些都在一个上下文中。

另一种方法是将对象图保存为 EF 对象(仍处于会话状态),然后在最后的向导步骤中,打开一个上下文并使用该Attach方法将对象附加到当前上下文。同样,这使用单个上下文。

于 2012-12-20T22:53:18.380 回答