08 2012 档案
摘要:Repository有两种实现思想1.自由式。领域层(DomainModel和DomainService)需要什么样的数据,都问Repository拿,Repository根据领域层的需要,增加许多方法。2.固定式。Repository只提供有限的几个接口,其中查询数据只提供FindById、GetAll几种方法。注意,固定式、特别是泛型的固定式(泛型的Repository)容易流于DA模式。DA模式与Repository模式有显著差别,要注意区分。我越来越倾向于用固定式。但固定式有个前提:DomainModel必须设计为聚合模型,访问任何数据,都必须从聚合根入手,不能跳过聚合根。例如我们要获
阅读全文
摘要:工作单元(UnitOfWork)模式的价值解决了当业务跨越了多个DomainService时,事务无法统一处理的问题。UnitOfWork模式的注意事项1.不应当在DomainService中调用UnitOfWork.Save(),因为DomainService永远不知道该何时提交、永远无法知道今后本身的方法会不会被跨DomainService调用。因此DomainService不调用UnitOfWork.Save方法是最安全可靠的。2.类似的,DomainService中的UnitOfWork对象必须依赖调用者传入,永远不要自己创建UnitOfWork实例,否则事务无法统一,数据也无法保持(
阅读全文
摘要:在{BitNami Redmine Stack}\apps\redmine\htdocs\app\views\attachments\_links.html.erb 的最后面增加以下内容即可:<% images = attachments.select { |a| a.image? } %><% unless images.empty? %><div class='images'><% images.each do |attachment| %><%= link_to image_tag(url_for({:controll
阅读全文