我正在使用 C# 和 EF 4.0,在我的应用程序中,我有一个存储库,它连接到数据库并执行我需要的所有操作(插入、更新、删除以及确保信息连贯的逻辑)。
在某些情况下,我可能需要更新许多具有相同信息的寄存器,所以如果我有一个允许一次更新多个寄存器的方法,那就更舒服了。在这种方法中,如果一个寄存器有问题(唯一约束、不存在的 FK ......)我可以分离实体并使用下一个寄存器重试。
但是我发现这种方法存在一些问题:
1.- EF 如何是一个事务,如果只有一个寄存器有问题,任何一个都会更新。
2.-如果我只更新一个寄存器,我可以分析原因是不是一个FK不存在,唯一的约束等等。如果该方法更新了很多寄存器,并且存在很多不同问题的寄存器,我无法将问题的原因告知用户,或者更难分析和告知用户。
3.-也许,所以该方法需要更多时间,因为它使用服务器的CPU资源更长,所以其他用户可能必须等到一些资源被释放。确实,这些方法非常快,但如果我使用只能更新一个寄存器的方法,则资源可以更好地在更多用户之间共享(更好的多任务?)。
优点:
1.- 我只创建一个数据上下文,所以我认为这更有效,因为我不需要在我要更新的每个寄存器中创建和销毁它(如果我调用 N 次只更新一个的方法,则会发生这种情况立即注册)。
所以我的问题是,当我需要更新许多寄存器时,更好的一种方法是接收作为参数的寄存器列表并一次性更新所有寄存器,或者更好的方法是一次只能更新一个寄存器并且是客户端谁需要调用该方法 N 次?
谢谢。