存储库模式,显式保存还是隐式保存?
我知道这是一个奇怪的问题:)
我真的很喜欢以正确的方式做事,但我有疑问。
我知道如何使用 DI 创建接口...
我的问题是:
最好有一个像“SaveChanges”这样的方法,每次添加/删除/任何对象时都必须手动调用该方法?:
_repo.Add(blah);
_repo.SaveChanges();
或者最好将更改保存在内部每种修改数据的方法?
另一方面,我应该始终打开连接还是关闭它?
我正在学习 DB4O,并且我有一个 Close 方法,当我必须在另一个地方使用存储库时,我会调用该方法(就像在另一个窗口中一样,我在打开窗口之前关闭)。
谢谢。
It's a weird question I know :)
I really like to do the things in the right way and I have a doubt.
I know about making a interface, using DI...
My question is:
Is better to have a method like "SaveChanges" that you have to call manually everytime you add / delete / whatever an object?:
_repo.Add(blah);
_repo.SaveChanges();
Or is better to save changes inside every method that modify the data?
On the other hand, should I have the connection always opened or have I to close it?
Im learning DB4O and I have a Close method that I call when I have to use the repo on another place (Like in another windows, I close before I open the window).
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我个人喜欢将 SaveChanges 方法分开。我认为它可以为消费应用程序提供更大的灵活性。这意味着它可以有更多的重用。
例如,将其分开允许采用“事务”方法,其中可以不断修改存储库,然后如果一切都可以接受,则调用 save 方法。
另一方面,如果您想立即保存而不需要单独调用,则可以创建另一个版本的存储库,该版本在 CRUD 操作期间调用 save 方法。
I personally like the SaveChanges method to be separated. I think it allows for more flexibility in the consuming applications. Which means it can have more reuse.
For example, having it separate allows a 'transaction' approach where the repository can be continually modified and then if everything is acceptable the save method is called.
On the other side, if you want to save immediately without a separate call, you can create another version of the repository which calls the save method during CRUD operations.
我认为在 .Net DataSet 中,他们还使用 AcceptChanges() 函数来“提交”最新的数据修改。 Oracle 数据库中也有一个用于类似任务的 COMMIT 命令。
I think in .Net DataSet they also use AcceptChanges() function to "commit" latest data modifications. Also in Oracle database there is a COMMIT command for similar task.