那个时候用的是Nhibernate 2.x, 那时候觉得NH对LinQ的支持太弱了.
还有定义视图太麻烦,要跟定义实体一样的流程. 因为UI通常是显示视图,不是单纯的实体.
但NH上手很容易,HQL类似SQL的语法,自动Tracking 实体的状态.
前段时间用EF4.1改写Petshop来练练手. EF有三种模式: DB First, Model First,Code First.
其实DB First, Model First 本质是一样的,因为EF自带了Model和DB同步的工具,这一点很爽.
而Code First给我的感觉是给偏执狂用的. 开发效率多慢啊,我还不如用NH呢...
ObjectContext的ObjectStateManager 只适用于不分层的开发. 而在多层开发的时候就变成"脑残"了
比如我要update 一个客户下属的order和orderdetail,(包括增加/修改/删除) ,在UI层我还得自己维护各
记录的状态Add/Modify/Delete, 然后在DAL层逐条ObjectStateManager.ChangeObjectState.
太恶心了, 这个时候应该要用Self-Tracking Entites ,请参考下文
如果要用WCF或者ViewState来存储Entity,则要对Self-Tracking Entiy Generator做修改, 可参考这个(过时了,要自己做些修改)
如果你用Session存储Entity,则要手工StartTracking,StopTracking, 或者MarkAsModified().
Template.MarkAsModified();
Template.Levels[0].FixedNum = 2;
Template.Levels[0].MarkAsModified();
修改过的Self-Tracking Entiy Generator下载:
/Files/zitjubiz/Self-Track.tt.txt
今天发现STE (Self-Tracking Entiy) 不能删除Collection里面的项,
比如order.orderdetails.remove[entity],并不会删除DB.上网找了好久,没发现解决方法.彻底无语.
算了.我还是放弃EF了,改回用NHibernate了!!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
2004-08-22 虚拟主机的安全