Skip to content

增加个接口/IObjectTrackingManager 修改下事务引用#1

Open
liamyue wants to merge 2 commits intoyuezhongxin:masterfrom
liamyue:master
Open

增加个接口/IObjectTrackingManager 修改下事务引用#1
liamyue wants to merge 2 commits intoyuezhongxin:masterfrom
liamyue:master

Conversation

@liamyue
Copy link
Copy Markdown

@liamyue liamyue commented Nov 25, 2016

No description provided.

@yuezhongxin
Copy link
Copy Markdown
Owner

yuezhongxin commented Nov 25, 2016

@liamyue 感谢你的代码提交,不过我觉得是有些问题:

  1. 从IUnitOfWork中抽离了一个IObjectTrackingManager(除了Commit),然后在BaseRepository中调用,其实就相当于BaseRepository中使用IUnitOfWork一样。
  2. IUnitOfWork的接口尽量不要更改,最好保存RegisterNew等操作。
  3. Repository中只做查询相关,IUnitOfWork维护领域对象的状态。

你的这种方式很像我之前提到的,只不过实现形式不太一样,并且Repository增加了ExecuteSqlCommand

  • Repository 和 UnitOfWork 依赖于 IDbContext。
  • UnitOfWork 只有 Commit,Repository 提供对象的所有操作(增删改查)。

这种方式博文最后进行比较了,我的想法都在里面。

@liamyue
Copy link
Copy Markdown
Author

liamyue commented Nov 25, 2016

代码提交的不是很完整,嗯 这篇文章看了,就像汤雪华回帖的内容说的 UnitOfWork的实现没有变 只是将指责分离成两个接口 一个是对外管理commit 事务 一个是对内 Repository对对象进行管理,IUnitOfWork对对象的持久化,是被动的通过仓储(IObjectTrackingManager)完成的 其实我就是应用评论对代码做了调整:) 我是新手,对DDD还不了解 只是凭感觉

@yuezhongxin
Copy link
Copy Markdown
Owner

@liamyue 嗯,非常感谢你的代码提交。

但我现在设计的原则是,UnitOfWork只维护领域对象的状态(比如增删改及事务),Repository只做查询(并且接口返回IQueryable),这种方式我后来在实际项目中一直应用,还不错,所以,你的设计方式我就不采纳了哈,关于DDD可以一起交流学习。:)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants