实体框架和临时对象

时间:2009-08-06 03:52:15

标签: entity-framework ado.net

我是实体框架的新手,目前正在尝试使用它。我创建了一个简单的数据库,在VS2008中设置了模型,并且使用EF以及插入新数据来获取代码来查询数据库。

有一件事让我有些困惑。我有一个名为Customer的实体(在我的模型中设置),作为我的应用程序逻辑的一部分,我希望能够为某些中间处理创建一个临时Customer对象。此特定对象永远不应存储在数据库中。但是,我注意到,只要我调用SaveChanges(),客户就会保存到数据库中。这不是我想要发生的事情。我很乐意在我想要包含的对象上调用AddCustomer() - 我只想创建一个临时实例供我自己使用。

我确实发现我可以调用Detach()并传入我的临时实例,这会阻止它被持久化。但是我不确定这是否是最好的方法,因为临时的Customer对象会有相关的对象,除非我经历并将它们分开,否则我可能最终会遇到热水。

我可能误解了EF应该如何工作,或者我错过了一些明显的东西 - 我希望有人可以让我直截了当!

由于

约翰

3 个答案:

答案 0 :(得分:0)

如果您想拥有一个永远不会再连接到EF的实体的临时实例,请使用此Entity Cloner来克隆实体

如果您尝试断开某个实体,请通过网络将其发送到某个位置(让我们说通过服务将其传递给客户端,进行修改,然后再将其恢复),然后再合并更改为EF - 现在不直接支持。但是,您可以尝试这些解决方案

Entity Bag:

EFContrib (you need PostSharp4EF)

答案 1 :(得分:0)

为什么不让另一个Customer类具有相同的字段?

答案 2 :(得分:0)

我自己使用EF4的服务遇到了这个问题 - 有一个更简单的解决方案 - 在你创建新的实体实例后,调用

objectContext.Detach(newEntity);