随笔分类 -  SubSonic

SubSonic的学习笔记
摘要:有个群友问SubSonic3.0执行存储过程时能不能使用output参数返回值,说测试过后获取不到返回值,早上有些时间所以就尝试修改了一下 首先在数据库中创建一个存储过程1 CREATE PROCEDURE [OutValue]2 @a int,3 @b int, 4 ... 阅读全文
posted @ 2014-06-27 11:26 AllEmpty 阅读(1951) 评论(9) 推荐(3) 编辑
摘要:前面几章主要是概念性的东西为主,向初学者们介绍项目开始前的一些知识与内容,从本章开始将会进入实操阶段,希望跟着本系统学习的朋友认真按说明做好每一步操作(对于代码最好是直接照着文档内容在你的IDE中打一次出来,而不是使用复制粘贴),这样对你理解后面的章节会有较好的帮助,如果你对我这种书写方式有什么... 阅读全文
posted @ 2014-04-17 08:44 AllEmpty 阅读(17557) 评论(72) 推荐(29) 编辑
摘要:早上在编写执行用例时,突然爆异常System.NullReferenceException: 未将对象引用设置到对象的实例 执行代码: 未将对象引用设置到对象的实例。 说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的... 阅读全文
posted @ 2014-04-16 10:55 AllEmpty 阅读(5403) 评论(6) 推荐(4) 编辑
摘要:最近公司客服提交了个BUG,说是更新产品详细信息时,有的可以有的更新不了,前段时间一直没空所以暂时放下,刚才又出现这个问题,所以马上处理了一下。 打开项目解决方案,进入DEBUG模式,拿到操作的数据提交后进行追踪,发现提交时产生了:System.Data.SqlClient.SqlException (0x80131904): 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 4 ("@up_xxx"): 数据类型 0xA7 的数据长度或元数据长度无效。 百度一下发现是由于更新字符串过长引发的异常,必须将参数的Size设置为-1才行,所以按下图处理 p 阅读全文
posted @ 2014-04-09 17:41 AllEmpty 阅读(5383) 评论(0) 推荐(3) 编辑
摘要:版本修改历史3.0.0.4.3版修复了下面问题:修正多表关联查询时,使用左关联和右关联出错问题修正DbDataProvider.cs类的ToEnumerable函数打开数据库链接后没有关闭的问题添加执行存储过程返回DataTable函数添加了黑头(http://www.cnblogs.com/heitou/)关于SubSonic执行速度优化代码(两种方法提升subsonic ORMapping的速度),执行速度比原版提高了2至3倍另外T4模版的数据库存储过程模版(StoredProcedures.tt)做了小修改,将原来必须New出来的方式修改为静态函数,使用SP.存储过程名称 来调用,将原来 阅读全文
posted @ 2014-03-22 16:05 AllEmpty 阅读(2124) 评论(6) 推荐(3) 编辑
摘要:今天在开发时,要使用到外连接查询,如图 老是查不出数据,所以就追踪了一下代码,发现查询后生成的SQL语句变成了内连接了,真是晕 然后继续Debug,发现原来SqlQuery类在调用LeftInnerJoin函数时传入的Join.JoinType.LeftInner参数,并没有被CreateJoin函数使用上,如下图 所以赶快修改为type,见图 心想应该可以了吧......继续执行程序,发现还是没有查询出数据来~~~真是郁闷......继续Debug,发现SQL语句还是有问题,见图 语句中多了一个INNER,所以查询直接爆错退出了,继续跟踪Debug,但是找来... 阅读全文
posted @ 2013-09-23 17:52 AllEmpty 阅读(1204) 评论(2) 推荐(4) 编辑
摘要:应网友的要求,抽了点时间写了这个Demo,希望对2.2版想升级到3.0的朋友或正在使用3.0的朋友有所帮助。大家在使用Demo过程中如果发现什么问题或有什么建议,可以直接将Bug提交给我或告诉我,我会抽时间进行处理的,如果支持我写的文章,也请登陆我的博客推荐一下,有你的支持,我会更有动力。 本... 阅读全文
posted @ 2013-09-13 12:24 AllEmpty 阅读(2135) 评论(10) 推荐(1) 编辑
摘要:================================================================名 称:SubSonic插件版 本:3.0.0.4.2最后更新:2013-8-30官 网: http://www.subsonicproject.com/BUG 修改:Empty(AllEmpty)Email: 1654937@qq.com学习讨论:SubSonic3.0学习群(327360708)相关博客:http://www.cnblogs.com/EmptyFS/================================================== 阅读全文
posted @ 2013-08-30 18:02 AllEmpty 阅读(1305) 评论(0) 推荐(1) 编辑
摘要:SubSonic3.0插件在创建实体后,对实体进行赋值操作时,为了去除一些不必要更新的字段,减少更新的内容,会将更新内容与默认值进行比较,如果默认值与当前更新的内容相等时,则不提交更新本列,这主要是为新增记录时设置的,因为本列虽然不进行更新,但由于数据库里存在默认值,所以提交后数据库会自动判断使用默认值进行填充。 比如数据库有表Test,有字段StatusName nvrchar(10), StatusId int,默认值为0,正常新增记录语句为 insert into Test (StatusNam,StatusId) values('名称', 0); 但由于StatusId 阅读全文
posted @ 2013-08-17 12:36 AllEmpty 阅读(1080) 评论(1) 推荐(1) 编辑
摘要:使用SubSonic3.0一段时间了,一直都想找机会测试一下各种查询分页速度,对比一下插件的查询效率到底怎么样,所以昨天写好了测试程序,准备好1K、1W、10W、50W和100W记录的数据表,早上详细做了测试。 本机硬件配置: 英特尔 第三代酷睿 i5-3470(3.2GHz 四核) 华硕 P8B75-V 8G金士顿DDR3 1600MHz内存 希捷 ST1000DM003-1CH162(1T / 7200转/分) 本机软件配置: Win7 + SQL2005 + VS2010 测试方法:使用5种常用分页方式进行查询,查看第一页、中间页与最后页,然后记录查询消耗时间,每页查... 阅读全文
posted @ 2013-08-16 12:56 AllEmpty 阅读(1934) 评论(1) 推荐(2) 编辑
摘要:================================================================名 称:SubSonic插件版 本:3.0.0.4.1最后更新:2013-8-10官 网: http://www.subsonicproject.com/BUG修改:Empty(AllEmpty)Email: 1654937#qq.com学习讨论:SubSonic3.0学习群(327360708)相关博客:http://www.cnblogs.com/EmptyFS/=================================================== 阅读全文
posted @ 2013-08-10 17:56 AllEmpty 阅读(1273) 评论(7) 推荐(4) 编辑
摘要:由于目前开发的项目使用云计算技术,客户端只进行UI与相关事件的功能开发,而所有的计算与处理都放到了服务器端,客户端与数据库没有任何关联,所以服务器端与客户端使用我们自己开发的通讯加密方式进行,而具体的数据内容传输就转成Json方式。客户端对数据进行添加与修改操作时,先将内容存储到实体中,然后转换成Json字串进行压缩加密处理后提交到服务器端,服务器端接收到后进行解压解密处理后,对Json字串进行反序列化处理存储到对应的实体当中,然后再进行相应的操作。 在开发框架时还没有什么问题,而进行具体的功能开发时,发现进行添加是没有问题,但编辑时还是执行添加操作,并没有执行编辑操作。经过半天的DeB... 阅读全文
posted @ 2013-08-06 12:33 AllEmpty 阅读(1126) 评论(1) 推荐(2) 编辑
摘要:下午在写代码时,突然发现一个列名为Enable的字段怎么也查询不出来,开始以为可能这个名称是关键字,所以给过滤掉了,所以就将名称修改为IsEnable,问题还是一样......将名称又改为IsEnables和IsPost结果还是查询不出来...... 所以开启了DeBug调试,逐步跟踪程序在SubSonic3.0插件中的执行情况,发现在一开始时,这个字段是读取出来了,但莫明其妙的不见了,反复跟踪了好几次后才发现,是因为这个字段类型为tinyint时,在C#中是转为byte类型的,而插件在添加查询显示列时,由于插件源码中对于类型过滤函数的判断中,只存在byt[]类型的判断,而不存在byte... 阅读全文
posted @ 2013-08-03 18:09 AllEmpty 阅读(722) 评论(1) 推荐(1) 编辑
摘要:在使用SubSonic3.0的查询功能时,会发现想通过执行返回我们想要的数据,切没有相关的功能,比如说:SubSonic.Query.Select,在使用查询时没有返回DataSet或DataTable等功能,而执行存储过程时也是一样,也缺少了返回首行首列值等功能,很不方便,所以又打开看了一下插件的源码,发现其实这些功能的执行接口都存在了,而是这几个执行的类没有将他们实现出来,所以就手动加了一下。 打开插件中的SubSonic.Query文件夹中的SqlQuery.cs文件,找到ExecuteScalar()函数,在这个函数下面加上下面代码: /// //... 阅读全文
posted @ 2013-08-01 11:15 AllEmpty 阅读(1433) 评论(3) 推荐(1) 编辑
摘要:使用SubSonic3.0模版生成时,同2.2版本一样,都会自动在一些类似数据库要用到的关键后面加要s(复数),这里也是3.0的一个小Bug,在查询时由于插件并没有完全的去掉s,所以会产生“用户代码未处理SqlException,对象名'xxxs'无效”异常,无法对加了复数的表进行查询 2.2处理就会简单,直接在config(配置文件)里配置SubSonicService标签,在该标签里的add子标签里设置fixPluralClassNames="false"就可以了,而3.0后没有了这些配置,所以目前来看只能是直接修改模版了。 首先打开SQLServer. 阅读全文
posted @ 2013-07-27 09:47 AllEmpty 阅读(1176) 评论(7) 推荐(1) 编辑
摘要:早上在测试程序时,使用了Top这个属性,没想到马上抛出了个“未处理InvalidOperationException异常(关键字'TOP'附近有语法错误)”这个错误提示,见下图: 然后Debug一下,发现原来是TOP 100与后面的内容粘在一块了,如下图: 对插件代码做了修改后,还是同样的问题,再次跟踪得更深一点,看了一下最后生成的SQL,才发现原来是TOP的位置给放错了,我擦... 插件里设置TOP的文件和位置: 通过Debug,找到SQL生成模版,见下图:(注:{7}是我自己之前添加的,用来处理去重复(Distinct)用的) 在里面增加{8}这个参数(文件名:Sql200 阅读全文
posted @ 2013-07-21 15:59 AllEmpty 阅读(970) 评论(2) 推荐(1) 编辑
摘要:在调试程序时,同事发现添加记录时,出现了System.NullReferenceException异常 DictBase dict = new DictBase();dict.DictCode = "aaa";dict.DictName = "bbb";dict.Save(); 而自己在编写查询Information info = new Information(x => x.Id == 1); 时,也引发了同样的异常,经Debug发现,问题出现在SubSonic.Schema.DatabaseTable类的函数public IColumn Get 阅读全文
posted @ 2013-07-20 15:34 AllEmpty 阅读(635) 评论(1) 推荐(1) 编辑
摘要:前段时间开发的框架使用了SubSonic2.2以后,觉得开发效率提高了不少,后期维护起来也非常方便,不由的喜欢上了SubSonic。中间有想过升级到更高版本,但度娘一下就放弃了,只有极少的中文版说明,而且中文版说明大多也是从英文版的DOC文档里翻译过来,没有更详细更细致的说明。使用SubSonic2.2一段时间后,觉得SubSonic插件虽然技术很成熟,但有一些调用起来不是很灵活,比较繁琐,所以一直想了解3.0,看看有没有更好更新的改进。SubSonic有很多人在用,使用SubSonic2.2版本以下的人也很多,但3.0以后就好像少了,有时想查找3.0的相关中文资料,找来找去就那几篇,对于.. 阅读全文
posted @ 2013-07-20 14:29 AllEmpty 阅读(3998) 评论(6) 推荐(4) 编辑