SubSonic3.0插件在创建实体后,对实体进行赋值操作时,为了去除一些不必要更新的字段,减少更新的内容,会将更新内容与默认值进行比较,如果默认值与当前更新的内容相等时,则不提交更新本列,这主要是为新增记录时设置的,因为本列虽然不进行更新,但由于数据库里存在默认值,所以提交后数据库会自动判断使用默认值进行填充。
比如数据库有表Test,有字段StatusName nvrchar(10), StatusId int,默认值为0,正常新增记录语句为 insert into Test (StatusNam, StatusId) values('名称', 0); 但由于StatusId有默认值,而提交的值同默认值相等的话,实际新增记录语句为insert into Test (StatusNam) values('名称'); 就可以了。
而SubSonic3.0插件在做修改操作时,由于没有进行判断当前操作是新增还是修改操作,所以同新增记录操作一视同仁,直接将修改该状态值的操作给过滤了,这些列的值也就无法更新,具体修改如下:
打开模版文件ActiveRecord.tt,找到下面代码
<#=col.SysType #><#=CheckNullable(col)#> _<#=col.CleanName #>;
public <#=col.SysType #><#=CheckNullable(col)#> <#=col.CleanName #>
{
get { return _<#=col.CleanName #>; }
set
{
if(_<#=col.CleanName #>!=value){
_<#=col.CleanName #>=value;
var col=tbl.Columns.SingleOrDefault(x=>x.Name=="<#=col.Name #>");
if(col!=null){
if(!_dirtyColumns.Any(x=>x.Name==col.Name) && _isLoaded){
_dirtyColumns.Add(col);
}
}
OnChanged();
}
}
}
将它修改为
<#=col.SysType #><#=CheckNullable(col)#> _<#=col.CleanName #>;
public <#=col.SysType #><#=CheckNullable(col)#> <#=col.CleanName #>
{
get { return _<#=col.CleanName #>; }
set
{
if(_<#=col.CleanName #>!=value || _isLoaded){
_<#=col.CleanName #>=value;
var col=tbl.Columns.SingleOrDefault(x=>x.Name=="<#=col.Name #>");
if(col!=null){
if(!_dirtyColumns.Any(x=>x.Name==col.Name) && _isLoaded){
_dirtyColumns.Add(col);
}
}
OnChanged();
}
}
}
修改后生成的代码就会改变为:
将SubSonic3.0插件源码重新生成一下就可以正常使用了。
本文章为原创内容,转载请保留下面信息。
发表本编内容,只要主为了和大家共同学习共同进步,有兴趣的朋友可以加加Q群:SubSonic3.0学习群(327360708)或Email给我(1654937#qq.com),大家一起探讨,由于本人工作很繁忙,如果疑问请先留言,回复不及时也请谅解。
想了解更多SubSonic3.0的相关问题,请观注博客:http://www.cnblogs.com/EmptyFS/
关于SubSonic3.0插件使用实体进行更新操作时(执行T.Update()或T.Save()),某些列无法进行修改操作的问题处理的更多相关文章
-
关于SubSonic3.0插件使用SqlQuery或Select查询时产生的System.NullReferenceException异常修复
早上在编写执行用例时,突然爆异常System.NullReferenceException: 未将对象引用设置到对象的实例 执行代码:
-
关于SubSonic3.0插件使用SubSonic.Query.Select查询时,字段类型为tinyint时列丢失问题的Bug修复
下午在写代码时,突然发现一个列名为Enable的字段怎么也查询不出来,开始以为可能这个名称是关键字,所以给过滤掉了,所以就将名称修改为IsEnable,问题还是一样......将名称又改为IsEnab ...
-
关于SubSonic3.0插件更新字符串过长引发的System.Data.SqlClient.SqlException的异常修复
最近公司客服提交了个BUG,说是更新产品详细信息时,有的可以有的更新不了,前段时间一直没空所以暂时放下,刚才又出现这个问题,所以马上处理了一下. 打开项目解决方案,进入DEBUG模式,拿到操作的数据提 ...
-
从零开始编写自己的C#框架(6)——SubSonic3.0插件介绍(附源码)
前面几章主要是概念性的东西为主,向初学者们介绍项目开始前的一些知识与内容,从本章开始将会进入实操阶段,希望跟着本系统学习的朋友认真按说明做好每一步操作(对于代码最好是直接照着文档内容在你的IDE中打一 ...
-
关于SubSonic3.0插件使用Json反序列化获得的实体进行更新操作时,只能执行添加而不能执行修改(编辑)操作的处理
由于目前开发的项目使用云计算技术,客户端只进行UI与相关事件的功能开发,而所有的计算与处理都放到了服务器端,客户端与数据库没有任何关联,所以服务器端与客户端使用我们自己开发的通讯加密方式进行,而具体的 ...
-
SubSonic3.0插件分页查询速度测试
使用SubSonic3.0一段时间了,一直都想找机会测试一下各种查询分页速度,对比一下插件的查询效率到底怎么样,所以昨天写好了测试程序,准备好1K.1W.10W.50W和100W记录的数据表,早上详细 ...
-
SubSonic3.0.0.4.3源码包与调用Dll
版本修改历史 3.0.0.4.3版修复了下面问题: 修正多表关联查询时,使用左关联和右关联出错问题修正DbDataProvider.cs类的ToEnumerable函数打开数据库链接后没有关闭的问题添 ...
-
SubSonic3.0.0.4.2源码包与调用Dll
================================================================ 名 称:SubSonic插件版 本:3.0.0.4.2最后 ...
-
SubSonic3.0 Demo1.0——应用了T4模版可减少开发过程中70%以上的代码量以及80%以上的出错率
应网友的要求,抽了点时间写了这个Demo,希望对2.2版想升级到3.0的朋友或正在使用3.0的朋友有所帮助.大家在使用Demo过程中如果发现什么问题或有什么建议,可以直接将Bug提交给我或告诉我,我会 ...
随机推荐
-
label中设置某些指定的字体的属性设置(Color,Size,FontColor)
不知道大家有没有遇到要设置某些字体的颜色和大小等属性的设置,下面就让我们一起走进字体的变形王国吧!!! 1.在storyboard中拖一个控件label,拖线设置属性为: @property (wea ...
-
http status 状态码汇总
常见HTTP状态码 200 OK 301 Moved Permanently 302 Found 304 Not Modified 307 Temporary Redirect 400 Bad Req ...
-
gulp 配置自动化前端开发
有的人说,grunt已经廉颇老矣,尚能饭否.gulp已经成为了未来的趋势,或许将撼动grunt的地位. 那么就得看看gulp到底优势在哪里,在我最近的使用中发现,我的到了一个结论:“grunt廉颇老矣 ...
-
ErrorExecution failed for task &#39;apptransformClassesWithDexForDebug&#39;
[原因]: 在工程中既有本地的lib.jar文件,又有compile链接.
-
Win7 Update 遭遇8024200D
可用办法如下: 1.点击开始菜单,点运行,输入cmd然后按回车.然后在命令行下输入: net stop WuAuServ 2.点击开始菜单,点运行,输入%windir%然后按回车. 3.在打开的文件夹 ...
-
[linux]scp指令
实例1:从远处复制文件到本地目录 $scp root@10.6.159.147:/opt/soft/demo.tar /opt/soft/ 说明: 从10.6.159.147机器上的/opt/soft ...
-
【循序渐进学Python】3. Python中的序列——字符串
字符串是零个或多个的字符所组成的序列,字符串是Python内建的6种序列之一,在Python中字符串是不可变的. 1. 格式化字符串 字符串格式化使用字符串格式化操作符即百分号%来实现.在%左侧放置一 ...
-
手动配置WCF宿主的.config文件遇到的几种错误
今天尝试用控制台应用程序作为WCF宿主,遇到几个问题,这几个问题虽然都不难,但寻找解决方案相当费时费力,做记录. WCF标准的配置文件为: <system.serviceModel> ...
-
[Redux] Persisting the State to the Local Storage
We will learn how to use store.subscribe() to efficiently persist some of the app’s state to localSt ...
-
BZOJ 1228: [SDOI2009]E&D(SG定理)
这道嘛,很容易就看出是个nim和,然后问题就是怎么算子问题的sg函数了 先暴力个表看下规律,很容易就找出来了~~~(百度空间又渣了,图贴不出来= =) 32 0 1 0 2 0 1 0 3 0 1 0 ...