2011-04-05 80 views
0

例如我有关系客户 - 订单(1 - N)。EntityFramework:如何不更新相关对象?

所以每一笔订单实体具有导航属性客户。如果我将订单保存到数据库中,则该对象也将在数据库中更新。如果更新订单,我应该怎么做以防止更新客户数据库?

感谢

回答

3

实体框架将更新所有修改过的实体是一个特定的上下文的一部分。这意味着,当你调用SaveChanges();每个已添加,更新或删除实体将被提交作为单个事务的一部分。没有办法只保存这些实体的一个子集。

如果你发现,当你认为它应该不是一个实体被保存,那么你很可能进行某种修改(可能通过设置属性的值无意更新)。仔细检查您的代码,以确保您不会添加,修改或删除Customer,因为它发生在某处。

如果你不相信这是事实,发布您的代码,我们可以看一下,看看发生了什么事情。

+0

是的,从GUI客户的修改防止,但我想知道,如果它可以防止例如EF层上,如果数据被意外更改。也许我可以将状态更改为未修改? – mimic 2011-04-05 19:30:44

+3

@Seacat:那不是你想要走下的路。你需要确定*什么*正在改变这些值,并修改代码,以便它不会。您可以在setter中为您的'Customer'类的属性设置断点,以查看更改来自哪里。 – 2011-04-05 19:33:30

+0

GUI窗体中有很多绑定到实体客户的字段。我可以处理点击每个控件,但有太多的控件(文本框,复选框,组合等),我怕我会错过一些东西。 – mimic 2011-04-05 20:30:49