存储库模式,显式保存还是隐式保存?

发布于 2024-09-12 11:12:31 字数 373 浏览 3 评论 0原文

我知道这是一个奇怪的问题:)

我真的很喜欢以正确的方式做事,但我有疑问。

我知道如何使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

白衬杉格子梦 2024-09-19 11:12:31

我个人喜欢将 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.

如果没有 2024-09-19 11:12:31

我认为在 .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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文