领域驱动设计==哲学
员工(Employee.cs)
posted on 2008-05-10 17:34 guushuuse 阅读(3283) 评论(8) 编辑 收藏
mark 回复 引用 查看
lz,为什么不在部门DAO和员工DAO之上再建立一个公共的泛型DAO类作为基类呢? 这样在部门DAO和员工DAO类中一句代码都不需要了(当有特殊的操作时就采用重载来处理) 回复 引用 查看
也不知道我说明白了没有,我的意思是: public interface IGenericDao<T, ID> { ... } public class GenericDao<T, ID> : HibernateDaoSupport, IGenericDao<T, ID> { ... } public interface IDeptDao { } public class DeptDao : GenericDao<Dept,Int32>,IDeptDao { } 员工类同理 这样在部门DAO和员工DAO类中就不需要写代码了,全部都在GenericDao中实现了,当然是在没有特殊操作的情况下,如果有特殊操作,就可以在部门DAO或者员工DAO中进行重载(不过我建议在Service层进行重载) 个人拙见,如有不当之处,还请见谅,最好能指教一番,多谢!!! 如不嫌弃,请加我MSN:laudy_lisa@hotmail.com,方便以后多交流!! 回复 引用 查看
To laudy: 谢谢指教 你的方式不错,但我很难用文字来表达你这种方式。所以代码写得多一些,尽量把我的意思表达出来。看来我的代码还需不断重构。 回复 引用 查看
@laudy 恩,通用的操作利用泛型解决了针对不同实体创建单独类造成的代码重复。继承一个泛型基类,对于个别方法单独重载。 回复 引用 查看
希望你提及 及联操作的内容。 最近也在学习这些,支持LZ 回复 引用 查看
public interface IBaseDAO<EntityT, idT> { IList<EntityT> LoadAll(); EntityT LoadByID(idT id); IList<EntityT> Load(string hsqlQuery, object[] values); void Save(EntityT fine); void SaveOrUpdate(EntityT fine); void Delete(EntityT fine); NHibernate.ISessionFactory SessionFactory { set; } } BaseDAO实现IBaseDAO 我是让其他实际DAO继承抽象BaseDAO,如此来实现的 回复 引用 查看
关联表的操作在Entity类中已经设置好了啊,在主表中添加IList<Entity>属性,配置文件设置好,直接调用范型类方法就可以进行操作了啊 个人观点:表之间的关联操作,重点在于数据库中表的设计及配置文件的配置和实体类的定义,当然这是应用层面的,复杂的操作要想理解透彻,还是看看NHibernate源代码吧:),我也没用过NHibernate,只是对Spring.net的Ioc及AOP思想比较感兴趣 回复 引用 查看
Powered by: 博客园 Copyright © guushuuse