15
2013
05

SocanCode常见问题

以前提的很多问题不太记得了,那就提到再更新吧。有问题请随时打开这篇文章,避免重复提问。

欢迎加入以下三个群进行讨论:

39028022(群1)39025847(群2)68162987(群3)

为什么DAL层中CreateInDbParameter方法中没有把字段长度添加进参数?
CreateInDbParameter这个方法有个重载,一个是参数带长度的,另一个参数不带长度.如果参数不带长度,那么输入的字符超出则会出现异常,如果参数带长度,输入的字符超出就会按此长度截取,不出错.有些开发人员认为不出错的好.实际上那是把这个错误留给客户了.客户输入的长度不对,而且保存成功,结果再查询后看到的又不是自己输入的,这不是一个严重的bug吗?而采用不带长度的方法,在开发人员自己测试时就已经抛出异常了,所以就会马上在上层限定用户的输入长度.这样就已经在开发阶段屏蔽了这个bug了.这就相当于提醒了开发人员在上层不要漏了检测用户输入.
为什么我输出的项目中Web项目不可用?
这是因为你的VS2005没有打上SP1,你可以打上SP1,也可以删除Web项目,新建网站.添加相关引用即可。
为什么连接的语句都没看到Close方法,是不是一直保持连接?
因为全部使用了Using方法,所以用完后,资源自然会释放。无需显示地调用Close方法,而且更安全。
为什么SocanCode3.X版本的数据库基类很简单,到了4.X后很难看懂?
是的,那个版本每种数据库类型就是一个类,只要调用与数据库类型相应的类即可。后来我想升级一下,原因有:
1、希望数据库基类能封装一下(其实这个问题以前有网友提过,只是一直未去实现),让上层调用的时候不必关注是什么数据库类型。
2、原先数据库操作基类虽然支持事务(通过传入一条一条的SQL语句实现的),但是有两个问题:一是不能传入相同的带参数的SQL语句,而我们经常需要这样,比如在一个表中依次新增几条数据,SQL语句都是一样的,只是参数列表不同,这就不能实现了。二是不能把第一条SQL语句取得一个值用于后面的SQL语句,这在插入主从表的操作中经常要用到。
3、希望上层有可能不需要改代码就能切换数据库类型,3.X是做不到的,需要把类名全部替换,而4.X是有可能做到的,只要上层使用的SQL语句通用,或者使用存储过程,这样就能做到只要更改Web.config就能随意换数据库类型。详细的数据库操作基类说明请看:http://www.cnblogs.com/yvesliao/archive/2008/12/19/1358270.html
鉴于这三个原因,建议大家在开发新项目时使用4.X版本(用旧版本生成的就算啦),以免有些不能实现的功能时,要自己在数据库基类中手动添加方法。虽然4.X的数据库基类比较难懂了(使用了工厂模式封装),但认真学习弄清楚后,你会发现4.X的优势比3.X多得多。
为什么安装了据说已经解决了某问题的新版本后,发现问题还是存在
这可能是安装之前没有卸载旧版本,请先在控制面板中删除旧版本,然后再安装新版本。 (目前最新的版本已经是绿色软件,无需安装)
为什么DAL层Add方法少了几个参数?
省略的参数有两种:
1、标识字段。标识字段会自增,新增一条记录自动赋值,所以无需赋值
2、有默认值的字段。通常设计数据库时会把新增方法中值固定的字段设置默认值。例如“发表时间”默认值为getdate(),“浏览次数”默认值为0。而如果程序中要根据业务赋不同的值,那这个默认值也没什么意义。你可以先生成代码,再设置默认值。 或者修改Codes源代码中DALCode.cs文件中的Add方法,编译后覆盖运行目录中的同名文件即可。目前的新版本可选择是否过滤带默认值的字段。
生成代码后,有些类找不到,例如PageList,PageInfo?
有些一个项目中公用的类是在生成的类中找不到的。在数据库上点击右键,选择"输出代码",输出的文件夹中才有。
非Access、SqlServer、MySql、Oracle、Sqlite 如何使用代码生成器?
目前数据库只支持以上四种数据库直接连接,但数据库基类还支持Sqlite数据库。要使用代码生成器,需要将数据库的结构按原样建立在以上四种支持直连的数据库中(简单的方法就是导出SQL脚本后在以上三种数据库运行即可),再生成代码,生成后修改web.config的连接配置即可。如果不是以上四种数据库也不是Sqlite,则需要自己在DBUtility中手工写个Helper才能使用。
为什么新版本在Model和Dal层会生成editable和internal两个文件夹?
将Model和DAL层的每个表对应的类分离为2个文件,当表有更改时,可重新生成直接覆盖internal文件夹下的内容,手写的代码请写在editable文件夹下对应的文件,解决了表有字段更改时的麻烦。
如何使用PageInfo和PageList?
PageInfo pi = new PageInfo(10, 1); //每页10条,取第1页
PageList pl = new BLL.Table().GetPageList(pi);gridView1.DataSource = pl.List; //List是结果集,还可取更多数据,例如pl.PageInfo.RecordCount为数据条数。


« 上一篇下一篇 »

相关文章:

SocanCode7.5.2.0发布   (2014-8-6 10:1:32)

SocanCode7.5.1发布   (2014-6-28 16:39:56)

SocanCode介绍及下载(已全部开源)  (2013-5-17 19:55:2)

SocanCode自定义模板  (2013-5-15 0:3:52)

SocanCode版本更新记录  (2013-5-14 21:48:25)

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。