从2008年年初开始用 Nbear 3.7.2 ,之所以选择它,主要是因为,它是开源的,可修改, 呵. 我并没有入选 Nbear 开发组, 自己改,自己用而已. 用了三个项目, 一个 Oracle , 两个 Sqlserver (2000,2008).
今天和原始版本做了一下比对. 整理了主要修改的地方,为方便说明问题,我的版本用 V95说明(受 Ubuntu 的影响, 喜欢用时间记录版本,和大小没关系,比较鄙视一个产品上来来说是6.0 , 7.0 之类的。如果那样的话,可以认为我的是 95.0 版), 原始版本用 V37 说明。
1. V95:Attach 方法可附加到多个实体, 在更新的时候, 会更新多个实体。 即. Attach 后 Save , 会影响多行记录.如:
2. V95:Oracle 支持自增ID,与 SQL Server 兼容用法。 Oracle 中需要建立相应的序列。 Save 返回新的值。
3.V95 ,添加了完整的从 .Net 类型到 数据库类型的映射 。 参见: PropertyConfiguration.NBear.Common.TheFullTypeList 。 在V37 里Oracle的映射比较乱。可参见原写法: NBear.Common.PropertyConfiguration.GetDefaultSqlType(System.Type)
4.V95为了在生成SQL 的时候特殊处理 Oracle , 增加了 NBear.Common.Util.DatabaseType 。
5. V95条件表达式增加对枚举的支持。
6.V95条件表达式增强 In 用法:
7.V95增加 左联接, 右联接,全联接。
8.V95 增加了 As 方法 , 针对 自查询 。
9. V95分离出去了 Newtonsoft.Json 项目,集成进来, 不合适。
10. V95增强外键支持,数据库上 子表外键在主表中可以是是 唯一索引列。 V37 中, 子表外键在主表中必须是主键列。参见:NBear.Common.Design.QueryAttribute.QueryAttribute(NBear.Common.Design.QueryType)
另外: V37 中 外键不能是组合键, V95 也是这样。
11. V37 里对 Oracle 支持不好。 很多标识符用 [] ,Oracle 不认。 V95 里改为了 “” 。 MySQL目前是不支持的, (MySql 是 ··) 。
12.V95 增加 有则修改, 无则添加的简单机制。 NBear.Data.Gateway.AttachToDb<EntityType>(EntityType) 。
12 V95修正了一些Bug 。
子查询 不外传参数值 : NBear.Common.WhereClip.WhereClip(NBear.Common.FromClip) 。
13. 生成工具, 增加两个按钮, 保存配置,读取配置 。方便而已 。
V95源码: http://files.cnblogs.com/newsea/NBear95.rar