Mindsware动态数据对象平台v0.2版发布

mindsware 2003-12-20 11:19:22
released version 0.2 at 2003.12.20

经过将近四天不分昼夜的奋战,终于按照几个热心朋友的建议,做了如下改进:
1. 添加一个用于存放数据库定义的Mindsware.Core.Db.DBContext类。
2. 按照Factory模式添加了一个Mindsware.Core.Db.DBFactory类,用户按照不同的
ProviderType采用Reflect方式,在runtime初始化各种底层数据类的实例,
而不是在Design time就引用诸如Oracle.DataAccess之类的assembly。
本来按照这个需求,使用AbstractFactory模式会更好一些,不过鉴于目前只
支持三种Provider:OleDb, SqlClient, ODP.NET,其中又只有ODP.NET需要使
用runtime reflection去创建OracleConnection、OracleCommand之类的数据类
实例,暂时就不那么麻烦了。仍保留了IDBFactory接口,作为以后扩充对更多
的Provider(例如ODBC等)的支持时修改成AbstractFactory模式之用。
现在,无需引用Oracle.DataAccess的assembly即可编译和运行,如果要使用
OracleDataProvider,只需要按照示例项目中的web.config那样设置好到Oracle
数据库的连接定义,给出Oracle.DataAccess.dll的文件具体路径即可。
3. 修改了O-R Mapping层的所有对象,以适应这种变化,光这个花了我十多个小时
来修改和测试。
4. version 0.1中,当修改了Global类里边的缺省DBContext之后,必须重启整个IIS
以反映变化,现在不用了。修改Global.Application_Start事件处理方法里边
的缺省连接之后,重新编译即可生效。如果不显式设定用哪一个DBContext,那么
会用名为default的DBContext,这也是为什么<dbContexts>设置里边至少要有
一个<dbContext name="default">的原因了。
5. 不仅可以一次性的很方便的在Global类里边设置全局缺省DBContext,而且可以
单独为每一个DBObject的子类设置该子类所用的DBContext,也就是说,很容易在
同一个项目中的不同DBObject子类中使用不同的数据连接,只要这些数据连接的
数据库定义都在web.config文件中设置好就行。关于这个的用法,请参考
MindswareTest示例里边的MindswareTest.DataObjects.Items2类的构造函数。
6. 修改了web.config文件中数据库定义(<dbContexts>)的格式,并且写了一个
Mindsware.Core.Misc.ContextSectionHandler作为SectionHandler来处理这种自
定义配置文件格式。
7. 数据库登录密码不再以明文显示,而改用DES加密算法加密后存放在配置文件里边。
8. Bug fix: For OracleDataProvider, when try to insert or update a BLOB column
with a null uploaded file, a OCI Lob exception occurred.
9. Bug fix: In query datasheet, when sumbit a query with date conditions,
the result page displayed a "Bad date format" error and did not perform
the expected query.

release version 0.1 at 2003.12.14

感谢SMTH dotnet版的nineteen版主和我的老朋友kangdh :)

到这里下载所有源码及示例:
http://www.cnb4c.com/Mindsware_DynamicDataObjects_v0.2.rar

论坛地址:
http://www.mindsware.com/bbs/list.asp?boardid=6
...全文
25 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
lengxue 2004-03-10
  • 打赏
  • 举报
回复
没人支持?
这样的东西要是发在 delphi版,一定热得不得了
哎!
1、顾名思义:这个框架主要完成两个功能: (1)实现Object to Database Mapping,开发者再也不用编写复杂的insert, update 和delete了,而且对Oracle, Sql Server以及各种OLEDB数据源支持透明访问。 其中Oracle和Sql Server的访问通过native provider方式,不通过OLEDB,最大 限度的提高性能。 (2)实现关系型数据表的动态维护,包括新增、修改、删除、查询、显示翻页的功能。 一个关系型表增加/删除字段、修改表现方式,都可以很容易的实现(几行代码)。 J2EE平台下面这样的Framework数不胜数,可是.NET平台下的却屈指可数,希望这个 Framework的问世,能够为.NET的普及做出一点贡献,也为大家学习.NET的Programming, Modeling提供一个范例。欢迎志愿者加入我的行列,一起丰富完善这个Framework。2、flexibility和plug-in ability很强,可适用任何.net项目,只需要在项目中reference Mindsware的assembly就可以使用,其中的DBObject, MultiDBObject, DBConnection 使用起来非常方便,提供了Insert,Update,Delete,RetreiveList,Count等非常 丰富的数据操纵方法。限于篇幅和时间,没有一一在示例中演示这些方法。3、要为很多张数据库表实现新增、修改、删除、查询、显示列表、翻页、排序的 操作,在asp/jsp里边每个表就需要大概4~5个左右的页面文件(还不算facade、 business logic、data access、data-mapping value object所需的类),很是 麻烦,如果这样的基础表达到20张以上,这个基本资料维护的工作就需要至少 两三个人月来完成,而且更新、维护起来绝对是个噩梦。 本框架使用一个aspx的页面完成对一张数据库表的新增、修改、删除、查询、列表、 翻页、排序操作(未完成),所有操作均封装在公用控件中,这个页面只是一个外壳, 可根据实际需要排放各种控件,设定显示风格,以及取舍各种页面操作功能。对每张 表开发者所需要编写的代码仅为10~30行。示例中有三个页面,演示了如何完成对 两个数据库表的数据维护工作。4、使用一个用户自定义的类完成对一张数据库表的schema定义,继承一个DBObject或者 MultiDBObject类(这个名字学习自一个开源项目expresso,功能也类似),只要 定义好schema,也就是手动设定一下每个column的名称、数据类型、是否主键、 是否可为空、是否参照其他表的主键、编辑时显示类型(显示为textbox, textarea, dropdownlist, radiolist还是别的什么)等等信息。那么自动可以使用基类已经 定义好的RetreiveList, Count等显示列表、处理查询的方法,以及update, insert, delete修改数据的方法。不用再写SQL语句,不用再绑定参数,一切都是自动完成。5、有一个专门Render表格的类,用于根据DBObject/MultiDBObject的子类的schema生成 各种表单,例如新增数据表单、修改数据表单(会load被修改的数据)、查询表单等, 里面的格式可以通过一个style列表来自定义,会根据data column的设定来决定显示 什么控件,比如一个参照其他表主键的列,会显示一个dropdownlist,显示被 参照表的键值的描述,而实际取值是键值,这是最基本的操作。还能根据列是否 允许为空、是否为数字、是否为密码,来动态加入validator,在页面上进行提交 前的validation,比如密码要求输两遍,而且两编输入的要一致,列为数字的文 本框里只能为数字等等。查询表格中,如果列为数字或日期,会自动给出起始值 和终止值两个框,如果是日期则显示日期控件。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧