此文章主要讲述的是SPL升级到3.2全面支持MySQL数据库的实际应用与具体操作,如果你是MySQL数据库方面的新手,对MySQL数据库的相关实际应用不是很了解的话,以下的文章会给你提供更全面的知识。
SPL从上次的3.1.0.5开始,经过了一段时间,积累了一些修改并进行了MySQL数据库的支持,现在发布SPL版本为3.2.0.4,Dll下载地址:这里 。只需要在项目中,把原来的Dll覆盖即可,如果还没下载过SPL早期版本的朋友,本次SPL自上次发布的3.1.0.5以后进行的更新有:
1、支持MS SQL SERVER中的Bit型数据类型
映射到ClassMap中的类型为boolean,如:
<attribute name="IsOver" column="IsOver" type="boolean" />
对应的实体类类型为bool型,如:
private bool m_IsOver; public bool IsOver { get { return this.m_IsOver; } set { this.m_IsOver = value; } }
在查询时可以通过Condition进行比较判断了:
Codition c=.... c.AddEqualTo("IsOver",false);
这会最终生成 IsOver='0'的查询条件
2、提供了对数据源的提供者类型的判断,这将方便区分不同的MySQL数据库提供者手动组装不同的SQL语句
用Setting.Instance().GetDatabaseVendor(dbName)根据dbName数据源取得数据源提供者,然后与DatabaseVendor枚举型比较
如access的日期比较与Sql Server的不一致:一个采用#号,一个采用'号
if(Setting.Instance().GetDatabaseVendor(dbName)==DatabaseVendor.MsAccess) { builder.append(" and SpecialPriceD2.FromDate<=#"+itemDate.Day.ToString()+"-"+itemDate.Month.ToString()+"-"+itemDate.Year.ToString()+"#"); builder.Append(" and SpecialPriceD2.ToDate>=#"+itemDate.Day.ToString()+"-"+itemDate.Month.ToString()+"-"+itemDate.Year.ToString()+"#"); } if(Setting.Instance().GetDatabaseVendor(dbName)==DatabaseVendor.MsSqlServer) { builder.Append(" and SpecialPriceD2.FromDate<='"+itemDate.Day.ToString()+"-"+itemDate.Month.ToString()+"-"+itemDate.Year.ToString()+"'"); builder.Append(" and SpecialPriceD2.ToDate>='"+itemDate.Day.ToString()+"-"+itemDate.Month.ToString()+"-"+itemDate.Year.ToString()+"'"); }
这个功能将为系统对多种MySQL数据库的支持更佳的灵活性,虽然SPL本身的“实体”与“标准”都可以区分不同的数据源提供者,但在需要手写SQL的地方,也需要根据不同的数据源提供者提供不同的语句执行
3、修订了对所有保留字的兼容性
目前对所有的SPL中的操作,都加了定界符,oracle采用“"”号,MS的采用“[]”号,MySql的采用“`”号,所有测试都通过了
4、在Condition里添加了对Null值的查询功能
此方式只针对AddEqualTo()和AddNotEqualTo()有效:
c.AddEqualTo("字段名",System.DBNull.Value); c.AddNotEqualTo("字段名",System.DBNull.Value);
5、增加了对MySql数据库的支持
SPL对MySql的访问连接采用的是MySql提供的专用.net connector,此驱动应该说是目前.NET连接MySql的更佳选择,在使用SPL访问MySql时,只需要安装一下此驱动即可,下载与介绍请看
使用时只需要配置DatabaseMap时类型设为“MySql”即可,如下:
<database name="MySqlDB" type="MySql"> <parameter name="User Id" value="root"/> <parameter name="Data Source" value="localhost"/> <parameter name="Database" value="mysql"/> <parameter name="password" value=""/> <classMapFile path="ClassMap.xml" /> </database>
只需这里配置后,SPL在具体应用中与其他的完全一样,测试情况:
实体测试--->通过
RetrieveCriteira、UpdateCriteria、DeleteCriteria测试--->通过
Transaction测试--->通过
自动增长主键测试--->通过
TOP功能测试--->通过
6、对DateTime的Null值进行了处理 (3.2.0.1开始支持)
如果要对DateTime类型的字段赋于Null值,只需要使用DateTime.MinValue即可:
aEntity.CreateDate=DateTime.MinValue;
在SPL内部会判断如果DateTime.MinValue的话,自动保存到MySQL数据库为System.DBNull.Value,这就解决了不能给 DateTime类型直接赋于System.DBNull.Value的问题。
7、修订了UpdateCriteria对属性名与字段名不一致时导致的错误(3.2.0.2开始修订)
原来在UpdateCriteira时没有对属性进行转化为字段名,导致在属性名与字段名不一致的情况下会找不到字段。
(非常感谢iamsunrise提供的建议,请下载了SPL3.2的朋友重新下载一下)
(感谢子扬报出的BUG)
8、本3.2.0.4已经修复了DataBaseType的MySql类型了。
扫描二维码推送至手机访问。
版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。
正在启动windows时间长怎么办 小编带来了Windows 7/8.1正在启动windows时间长解决方法,假如有朋友在安装完Windows系统之后一直停留在“正在启动windows”的话,不妨试一试下文的方法哦~ 原因:Windows 7/8.1不完全支持UEFI,需要CSM(Comp...
Windows 7 64位系统开机后提示"press any key to restart",无法进入系统了,具体现象如下所示: 故障分析: 故障的主要原因还是硬盘的问题,可以先检查是不是接触不良或坏了,进行修复或更换即可。 解决方法: 1、开机按F8不动到高级选项出现在松手,选“...
假如你想要在Ubuntu上使用Windows应用,就需要用到Wine了,除了支持Linux系统外,Wine还可运行于其他系统,是个非常使用的软件,下面小编就以Ubuntu 14.04为例,给大家介绍下Ubuntu 14.04安装Wine的步骤。 Ubuntu 14.04安装Wine的步骤 1...
有些用户不喜欢Windows 7任务栏的颜色,想要换种自己喜欢的,该怎么做呢?现在小编就和大家一起分享修改Windows 7任务栏颜色的方法吧。 步骤 首先打开“控制面板”,找到“个性化”,如下图所示 接上步骤,打开“个性化”,如下图,找到“窗口颜色” 3接上步骤,点开“窗口颜色”,...
要解决这个故障,我们需要启动Remote Access Connection Manager与Network Connections及Telephony服务。我们可通过两种方法启动服务: 启动方法一:打开Windows左下方的“开始 ->运行”,在对话框内输入services.msc,在弹出...
一、打开控制面板,选择“网络和共享中心”; 二、在网络和共享中心中选择“设置新的连接或网络”; 三、选择连接到Internet; 四、选择“仍要设置新的连接”; 五、选择“宽带PPPoE ”; 六、输入对应的宽带帐号及密码,点击连接即可;...