移植MSPetShop3到Castle MonoRail -Model与DAL层的移植(AR)
Posted on 2006-05-14 17:39 绿叶 阅读(4086) 评论(14) 编辑 收藏 举报【简介】
我本来很早就想移植这个例子了,只是一直因为各种原因滞后了开发时间。虽然Castle主页上面有PetStore的项目,但一直都是空的,SVN上也没有消息。通过这个例子,希望能更深入Castle的设计思想,用这强大的框架为什么做更多的事情。我刚刚完成Model与Dal层的移植,下面共享给大家。
【前提】
1。VS.NET 2003,没在VS05上测试过
2。NUnit 2.2.7
3。Castle相关的DLL我已经提供,如果你安装了Castle工具包,可能会出现版本不匹配的问题。
4。安装PetShop3,确保PetShop3可以在你机器上正常运行。
5。将MSPetShopOrders中的表移到MSPetShop中,原因在下面。
【移植】
1。Model层改用Castle.ActiveRecord实现,我原本选择直接Nhibernate,但是AR是Castle的头条项目,顺便也体验下,或许能发现少许实际应用方面的问题。
2。DAL层使用ActiveRecordFacility和TransactionFacility。
3。TestCase中是用IOC的,这意味着在以后的BLL层和WEB层都使用IOC,这么强大的东西为什么不使用呢?是吧,呵呵。
【问题】
1。多数据库配置问题,因为我用ActiveRecordFacility,我配置多数据库时候不成功,搞了很久所以放弃了。由于这个原因,我把PetShop中的其中一个数据库MSPetShopOrders中的表(3个表)都移动到MSPetShop这个数据库中,以后我再做修正,因为我现在不知道是什么问题导致配置失败的。
2。IProduct.GetProductsBySearch我尚未实现。
3。关于优化,目前我没有做任何DAL层的优化操作,你可以给我提提意见。
【实现】
1。因为作为移植,所以我没有更改到PetShop3中的所有数据表字段、关系和结构,或者以后在重构或者优化中会再做处理。
2。我保留了原的Model,因为这样做在做BLL层和WEB层中处理的时候,我无需做大修改。这样处理后,PO和VO就分离了,原的Model是VO,ActiveRecord中的Model是PO。
3。保留所有IDAL接口,同样是为了适应BLL层的移植。
【抢鲜下载】
1。目前提供下载的有三个项目包:PetShopDAL、PetShopDAL.Test和PetShopModel:https://files.cnblogs.com/wj/PetShop_Model_DAL.rar
2。NUnit和数据库结构图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构