使用Castle.ActiveRecord的注意事项之三:继承
2008-10-29 14:26
375 查看
学习继承,纯属意外,数据库的设计者硬要把A,B,C三个完全不同的对象存在同一张表中,并振振有词说A,B,C三个对象的内容比较类似,都有Name,Address等属性,加一个Type标识就可以了。事后证明这个是数据库的一大败笔,因为这么项目中有D对象,D对象与A对象是一对一关系,与B对象是一对多关系,与C对象是多对多关系......
这可苦了我了,按照一个表一个对象的思路,原来A,B,C作为一个对象 O,里面有个Type属性,当Type为1的时候为A,为2的时候为B,为3的时候为C。D对象中,几个属性:O(表示A),OList(表示B),OList2(表示C)。开发的过程中,开发人员都问我,D里面的那些O到底表示什么? 当要搜索出所有的A对象,结果ActiveBase类带的find方法会搜索出所有的O对象。 而且由于前期存储数据的马虎,很多人在存的时候没有注明Type,导致数据库里面的数据一片混乱.......
幸好后来看到了关于Hibernate继承的文章,一看Castle里面ActiveRecord果然也有。
一、单表关联继承、用于多个对象使用同一表的情况。
对于上面的情况,设计了
Code
new public static AVO[] FindAll()
{
return ((AVO[])(ActiveRecordBase.FindAll(typeof(AVO))));
}
new public static AVO Find(int aId)
{
return ((AVO)(ActiveRecordBase.FindByPrimaryKey(typeof(AVO), aId)));
}
new public static AVO[] FindAllByProperty(string prop,Object o)
{
return ((AVO[])(ActiveRecordBase.FindAllByProperty(typeof(AVO),prop,o)));
}
本文原于2008年03月22日 00:50:00发于http://blog.csdn.net/appgqp/
这可苦了我了,按照一个表一个对象的思路,原来A,B,C作为一个对象 O,里面有个Type属性,当Type为1的时候为A,为2的时候为B,为3的时候为C。D对象中,几个属性:O(表示A),OList(表示B),OList2(表示C)。开发的过程中,开发人员都问我,D里面的那些O到底表示什么? 当要搜索出所有的A对象,结果ActiveBase类带的find方法会搜索出所有的O对象。 而且由于前期存储数据的马虎,很多人在存的时候没有注明Type,导致数据库里面的数据一片混乱.......
幸好后来看到了关于Hibernate继承的文章,一看Castle里面ActiveRecord果然也有。
一、单表关联继承、用于多个对象使用同一表的情况。
对于上面的情况,设计了
Code
new public static AVO[] FindAll()
{
return ((AVO[])(ActiveRecordBase.FindAll(typeof(AVO))));
}
new public static AVO Find(int aId)
{
return ((AVO)(ActiveRecordBase.FindByPrimaryKey(typeof(AVO), aId)));
}
new public static AVO[] FindAllByProperty(string prop,Object o)
{
return ((AVO[])(ActiveRecordBase.FindAllByProperty(typeof(AVO),prop,o)));
}
本文原于2008年03月22日 00:50:00发于http://blog.csdn.net/appgqp/
相关文章推荐
- 使用Castle.ActiveRecord的注意事项之三:继承
- 使用Castle.ActiveRecord的注意事项之三:继承
- 使用Castle.ActiveRecord的注意事项三:继承
- 使用Castle.ActiveRecord的注意事项之一:总览
- 使用Castle.ActiveRecord的注意事项之四:using (new SessionScope(FlushAction.Never))
- 使用Castle.ActiveRecord的注意事项四:using (new SessionScope(FlushAction.Never))
- 使用Castle.ActiveRecord的注意事项之一:总览
- 使用Castle.ActiveRecord的注意事项之二:级联
- 使用CASTLE.ActiveRecord的注意事项之一:总览
- 使用Castle.ActiveRecord的注意事项之四:using (new SessionScope(FlushAction.Never))
- 使用Castle.ActiveRecord的注意事项之二:级联
- 使用Castle.ActiveRecord的注意事项之二:级联
- 使用Castle.ActiveRecord的注意事项之一:总览
- 使用Castle.ActiveRecord的注意事项之四:using (new SessionScope(FlushAction.Never))
- ObjectQuery for Castle.ActiveRecord 使用指南(1):From语句
- Yii中使用activeFileField上传图片注意事项
- 使用 Castle ActiveRecord 开发发现的一些问题
- 使用Castle.ActiveRecord框架的一些问题
- 使用 Castle ActiveRecord 开发发现的一些问题
- 继承 (inherit )的使用与注意事项