- rchive/2012/04/16/2452660.html" target="_blank">EntityFramework之领域驱动设计实践【后续篇】:基于EF 4.3.1 Code First的领域驱动设计实践案例》一文。毕竟时隔两年,我在领域驱动设计方面也有了新的理解和领悟。...
- 法的主要作用是为了能够在完成应用层处理后,将一些必要的数据信息以领域事件的形式发布到ESB上去,以便事件消息的Subscriber能够获得并对信息做进一步处理。这是出于对系统集成以及防腐层实现的考虑。在目前的案例中,请直接无视这部分代码。我是想时现日志记录的功能,请问是以领域事件的模式实...日志记录可以利用领域事件,但更好的做法是采用AOP。在Byteart Retail中,没有包含AOP的演示,你可以参考于基础架构层的,因为Repository的实现是需要与基础架构层的组件(比如数据库访问组件、MSMQ等)直接联系的。在这个案例中,我把基于EF的Repository实现放在ByteartRetail.Domain.Repositories命名空间下了,不过也不要紧,无非就是一个名字而已,因为这个assembly是一个相对独立的类型库。...这个部分在现在版本的ByteartRetail案例中并没有继续实现。从概念上讲,这个方法的主要作用是为了能够在完成应用层处理后,将一些必要的数据信息以领域事件的形式发布到ESB上去,以便事件消息的Subscriber能够获得并对信息做进一步处理。这是出于对系统集成以及防腐层实现的考虑。在目前的案例中,请直接无视这部分代码。og/singleTableInheritance.html" target="_blank">Single Table Inheritance模式、Class Table Inheritance模式,以及你好,能否把你有疑惑的代码部分贴出来呢?度来看待同一事物。如果我真喜欢装逼、真要装逼的话,我应该去读.NET框架的源代码然后一行行地解释给各位听,或者根本就不要去弄什么应用软件的开发,而直接弄芯片开发和汇编语言。毕竟懂应用软件的开发的人要比懂汇编的人多很多,高手也太多了,没必要在这个圈子里将自己有限的知识作为装逼的工具。....cnblogs.com/daxnet/archive/2012/03/01/2375181.html" target="_blank">在Apworks框架中解除NHibernateContext与NHibernateRepository的依赖关系》一文中的方式对仓储进行扩展,或者也可以使用C#的“扩展方法”特性,对仓储接口进行延伸。又或者,如果你不考虑框架给你提供的扩展因素的话,可以直接修改仓储接口来满足需求。总之,我们在进行架构技术设计的时候,需要对现有的框架进行思考,找到一个比较合理的切入点将我们的需求与技术框架相融合。......eryable<T>的Where<T>(Expression<Func<T, bool>>),也就是把整个表的数据读到内存再重新筛选。这样,将EntityFrameworkRepository类修改一下,在DbSet的Where调用时,不要使用specification.IsSatisfiedBy,而直接使用speci...[b]如果在Where中使用Specification.IsSatisfiedBy,那么就会使用参数为一个Func委托的Where重载,而这个重载返回的是一另一部分原因就是,DDD更适合大型企业级应用,而国内绝大部分项目都达不到这样的规模,因此投入大量的人力物力去实践DDD就显得特2....素领域模型是值得的。您怎样看这件事情?目前是否有半手工实现的ORM工具?
3. 实体对象ID在我们系统中是通过Oracle数据库的序列生成的,当新...你好!
1、NHibernate应该是可以的;EF貌似不行
2、我觉得这种应用情况还是比较普遍的,此时你需要将由ORM根据数据库产生的Model与Domain Model区分开来。一旦Model从数据库产生,那么它就已经是Data Model,而不是Domain Model了,再在这个Data Model上去手工添加一些Domain Model的特质就显得很牵强。我觉得在这...呵呵,客气客气。要看有没有基于MySQL的EF Provider,Oracle应该是可以的。你可以上Oracle的网站下载。没有区别,我在这里用XSD设计DTO,就是为了能够方便地使用第三方工具图形化设计XSD,然后可以使用svcutil.exe/dconly命令行自动化代码生成。DTO跟领域模型对象是没有关系的。当然这些DTO你也可以自己用手写。Enterprise Architect,可以根据代码生成标准的UML图。mapTo="ByteartRetail.Domain.Repositories.EntityFrameworkRepository`1[[ByteartRetail.Domain.Model.Customer, Bytear...这个是标准滴写法,请参考微软的相关文档。:)...改一下,在DbSet的Where调用时,不要使用specification.IsSatisfiedBy,而直接使用specification.GetExpression()即可。...用AndyHai:用Danny.tian:请问楼主,写POCO时,为什么不用{get;privete set}这种形式?都用自己手写呢?个人习惯还是,有什么其他的考虑?1、好像要用EF Code First,就必须使用public getter/setter这样的属性,如果要映射private的属性,也是可以的。不过就需要自定义一些映射机制;另外,EF Code First貌似无法映射对象的真正状态:私有字段(private fields),这一点NH要比EF强很...[b]但是产生的所有状态访问点好像都是public geLonwern:看了下代码,数据查询用了Specification模式,导致调用的方法是IEnumerable<T>的Where<T>(Func<T, bool>)而不IQueryable<T>的Where<T>(Expression<Func<T, bool>>),也就是把整个表的数据读到内存再重新筛选。 嗯,看得仔细,这个问题我再看一下。呵呵。谢谢指正!public getter/setter这样的属性,如果要映射private的属性,也是可以的。不过就需要自定义一些映射机制;另外,EF Code First貌似无法映射对象的真正状态:私有字段(private fields),这一点NH要比EF强很多。所以综合考虑EF和NH的应用,我选择了使用public ge...[b]我打算设计的这个图形化工具主要是为Apworks框架服务的。就像EDMX为EF服务的那样。至于EDMX,在Code First之前,它会产生太多辅助类型或属性,产生的Model Object根本不是POCO,这跟DDD是违背的。...AndyHai:请问楼主,GetAll和FindAll在意义上有什么不同吗?好像就是GetAll在没有找到数据时会抛异常?而FindAll不抛? 你答对啦。呵呵,就是这么一点区别,增加一个GetXXX的方法,可以减少客户端程序的非null判断。以综合考虑EF和NH的应用,我选择了使用public getter/setter这样的属性作为对象状态的访问点。当然,这在一定程度上是违背领域驱动设计的
2、Model中的代码都是手写的,这不是我的习惯问题,而是在这个解决方案中,并没有一个工具能够通过图形化的工具来自动产生Model。不过我最近在研究Visual Studio 2010 Visualization & Modeling SDK,希望在不久的将来能够将图形化的DSL引入我的Apworks框架中,方便架构设计师和开发人员对Model进行建模。...racle上应用EF也不是什么难事。...AndyHai: 哦。哈哈。不用双语,以后就用中文吧。
@dax.net
双语注释,啊哈哈,楼主估计要疯掉吧?^_^roloxa:好厉害 过奖了,所谓一山更比一山高,只有不断地学习,才能有更多的收获。成绩代表过去,能力代表现在,学习代表未来嘛。开国伟人: 整个解决方案的代码量不算小的,贴出来太占篇幅啦。:-)
直接贴代码哇,
囧~!猫喜达人:我的英语很菜的完全看不懂啊 嗯,这点我没有考虑好,看样子我以后得将注释换成中文的,能够方便大家阅读的。实在抱歉。不过另一方面,学好英语对做软件的从业人员还是很重要的,有很多技术资料的参考文献在国内是很少有的,可以大大开阔你的视野。










