好吧,在这篇文章中,我得出的结论是,在每次调用模式下使用服务更好,因为它更有效。这使我拥有短暂的数据上下文,即我调用的方法的生命周期。
在这个例子中,我看到了如何修改元素列表的数据,只需要将实体的状态设置为修改。
但是,例如,我该如何处理一项操作、修改和更新?
一种情况可能是这样。我有书籍和作者,客户端应用程序有一个包含两个数据网格的视图,一个用于作者,另一个用于书籍。用户可以在第一个数据网格中添加作者和修改他们的信息,并对第二个数据网格中的书籍执行相同的操作。也可以将书籍分配给他们的作者。
我有 POCO 类,所以我有一个作者类,其属性是书籍列表。好吧,我可以将书籍添加到这个列表中,然后当我调用服务方法 updateAuthors 时,我只需要使用作者的类作为参数,EF 就知道如何处理书籍了。也不需要通过这本书。
但是,当书籍列表中有新书籍以及存在但其信息被修改的书籍时会发生什么?
在我开头提到的帖子示例中,它说明了当所有实体都被修改时如何做,但是如果我想添加新的寄存器,我需要将状态设置为添加。那么,如果有混合实体,我该怎么办?它是否存在任何模式或某种方式来做到这一点?我必须设置所有书籍的状态?我可以知道账簿的状态,因为我使用了一个自动数字作为 ID,所以如果 ID 为 0 是一个新的寄存器,否则是一个修改。
谢谢。戴姆洛克。
编辑:也许我的问题不是很清楚。我想知道的是如何一次保存许多实体的更改。例如,我有 Authors、Books 和 Custormers。我添加,修改和删除其中许多信息。在我的 WCF 客户端中,我有保存作者更改的方法、保存书籍更改的其他方法和保存客户更改的其他方法。
每次调用我的服务如何,我需要进行三个调用,每种类型的实体一个,这是独立的。但是,如果我直接使用实体框架,我可以对多种类型的实体进行许多更改,并且我只需要调用一次 savechanges,它就可以完成所有工作。如何对 WCF 和 POCO 实体执行相同操作?
我正在阅读有关自我跟踪实体的信息,购买我有同样的问题,我可以使用 Applychanges(entity) 但如果我没记错的话,它只会将更改应用于一个实体。如果我对许多实体进行了更改,是否需要调用 N 次?
谢谢。