摘要:Asp.net MVC中的Model自动绑定功能,方便了我们对于request中的数据的处理, 从客户端的请求数据,自动地以Action方法参数的形式呈现。有时候我们的Action方法中想要接收数组类型的参数,如何写表单,使得Model能够自动绑定到数组参数上呢?看下面的代码,Action方法UpdateStudents就需要IEnumerable类型的参数,用来批量更新Student数据。[HttpPost] public ActionResult UpdateStudents(IEnumerable students) { //....save }上面是一个非常典型的应用场景, 如... 阅读全文
.Net中使用aliases让相同命名空间的dll引用共存
2013-11-12 18:40 by JustRun, 2428 阅读, 0 推荐, 收藏, 编辑
摘要:有些不得已的时候,我们需要同时在代码中使用某个dll的不同版本。比如用低版本的dll中的方法导出数据,然后使用高版本的方法导入数据来实现数据的升级. 又或者需要同时使用第三方的dll不同版本。如何使它们并存于系统中是个难题。如果同时存在于系统中,会出现ambiguous refrence(有歧义的引用)的编译错误。下文介绍如何使用aliases解决这个问题。一, 构建两个不同版本的Project首先构建2个不同的Project来模拟不同版本的dll引用, 这两个project中的命名空间和类名完全相同。在MultipleVersionTest项目中同时引用这两个Project. 如下图:Hig 阅读全文
使用Web.Config Transformation配置灵活的配置文件
2013-11-12 08:08 by JustRun, 5735 阅读, 17 推荐, 收藏, 编辑
摘要:发布Asp.net程序的时候,开发环境和发布环境的Web.Config往往不同,比如connectionstring等。如果常常有发布的需求,就需要常常修改web.config文件,这往往是一件非常麻烦的事情。Web.Config Transformation能够在不同的发布环境下,产生不同的web.config文件,非常方便和实用。阅读目录:一、Web.Config Transformation二、一个实际的例子三、Web.Config Transformation具体语法一. Web.Config Transformation项目中有个默认的web.config, 还可以定义格式为web. 阅读全文
Lazy<T>在Entity Framework中的性能优化实践(附源码)
2013-10-27 18:12 by JustRun, 5635 阅读, 22 推荐, 收藏, 编辑
摘要:在使用EF的过程中,导航属性的lazy load机制,能够减少对数据库的不必要的访问。只有当你使用到导航属性的时候,才会访问数据库。但是这个只是对于单个实体而言,而不适用于显示列表数据的情况。这篇文章介绍的是,使用Lazy来提高显示列表页面的效率。这里是相关的源代码 PerformanceTest.zip阅读目录:一、问题的描述二、数据表和EF实体介绍三、lazy load的性能四、使用StudentExtensionRepository来提高效率五、进一步改进,使用StudentExtensionRepository1来实现按需访问数据库六、总结一,问题的描述在使用EF的过程中,导航属性的l 阅读全文
菜鸟程序员之Asp.net MVC Session过期异常的处理
2013-10-19 11:14 by JustRun, 8642 阅读, 10 推荐, 收藏, 编辑
摘要:小赵是刚毕业的计算机专业方面的大学生,4年的大学时间里面,他读过了很多编程方面的数据,也动手也了很多代码。现在毕业了,他如愿的加入了T公司,开始了自己的程序员生涯。他信心满满,相信自己4年的学习到的东西,一定能够在工作派上用场,帮助自己很快的胜任现在的工作。阅读目录:一、Session引发的异常二、使用MVC中的Filter来对Session进行验证三、对于Ajax请求的中,Session失效的处理四、处理Session过期异常的重要性一, Session引发的异常小赵刚进公司,就参与到了一个实际的项目中了,项目使用的是Asp.net MVC。花了大概2个周的时间,小赵就完成了所有功能,提交给 阅读全文
Windows下查看端口占用
2013-10-15 17:36 by JustRun, 761 阅读, 0 推荐, 收藏, 编辑
摘要:最近在重新安装Mysql的时候,发现3306默认端口被占用了。类似的情况常常遇到,想查看到底是哪个程序把这个端口占用了。下面是我google找到的方法,和大家分享。1. 首先,使用netstat -aon|findstr "3306"命令,查看3306端口都被哪个进程占用了下面的PID就是进程Id2. 使用命令 tasklist|findstr "3628"查看3628进程是什么程序通过上面的命令,就很容易的知道是谁占用了端口了。 阅读全文
MVC数据验证原理及自定义ModelValidatorProvider实现无编译修改验证规则和错误信息
2013-10-15 08:00 by JustRun, 2642 阅读, 20 推荐, 收藏, 编辑
摘要:Asp.net MVC中的提供非常简单易用的数据验证解决方案. 通过System.ComponentModel.DataAnnotations提供的很多的验证规则(Required, StringLength等)。但是常常有这样的需求,我们希望能够把model的验证规则,保存到数据或者xml文件中,而不是代码里, 这样的好处是,我们可以很方便的修改验证规则和错误消息,避免需要重新发布网站。这篇文章,一起来看看是如何通过自定义ModelValidatorProvider来通过XML文件配置对于Model的验证。阅读目录:一、简单回顾内置MVC验证的使用二、分析MVC验证的内部过程三、一个例子,针 阅读全文
如何恢复Mysql数据库
2013-09-28 15:42 by JustRun, 4018 阅读, 2 推荐, 收藏, 编辑
摘要:这里说的MySql恢复数据库,是指没有通过正常备份的情况下,通过Mysql保存的数据文件如何恢复数据库。由于在一台测试机器上打算重新安装Mysql数据库,由于简单粗暴的直接卸载了,没有备份公司Discuz和Redmine使用的Mysql数据库,过程可想的悲惨。还好的是只是卸载掉了Mysql的程序,所有的数据文件还是存在的。下面是在恢复数据库的过程1. Discuz数据库Discuz数据库的恢复非常顺利, 在安装好新版本的Mysql后,直接将原来的数据库文件copy到新的数据目录中,重新启动mysql, 就能看到恢复的数据库了2. Redmine数据库本打算直接使用上面的经验,也能看到所有的表, 阅读全文
Entity Framework做IN查询
2013-09-14 11:43 by JustRun, 5939 阅读, 4 推荐, 收藏, 编辑
摘要:开发中遇到的Too high level of nesting for select错误项目使用了Entity Framework结合Mysql, 遇到了一个非常奇怪的性能问题,一个看起来非常简单的查询通过不了。报出错误, “Too high level of nesting for select”。整个查询非常简单,只是从表中取到属于一个集合中的id的数据, 比如从表中取到OfficeId 是1, 2,3,6的数据。Expression> filter = office => officeIds.Any(id => id == office.OfficeID);var of 阅读全文
分享基于Entity Framework的Repository模式设计(附源码)
2013-09-07 20:59 by JustRun, 19876 阅读, 35 推荐, 收藏, 编辑
摘要:关于Repository模式,在这篇文章中有介绍,Entity Framework返回IEnumerable还是IQueryable?这篇文章介绍的是使用Entity Framework实现的Repositoy模式设计,欢迎各位拍砖.阅读目录:一、实现的思路和结构图二、Repository设计具体的实现代码三、Repository设计的具体的使用四、总结一,实现的思路和结构图总结一下,Repository在实际使用中,有下面三种特点:Repository的共同性有一些公共的方法(增删改查), 这些方法无关于Repository操作的是哪个实体类,可以把这些方法定义成接口IRepository, 阅读全文
Asp.net MVC使用Model Binding解除Session, Cookie等依赖
2013-09-04 18:59 by JustRun, 3369 阅读, 5 推荐, 收藏, 编辑
摘要:上篇文章"Asp.net MVC使用Filter解除Session, Cookie等依赖"介绍了如何使用Filter来解除对于Session, Cookie的依赖。其实这个也可以通过Model Binding来达到同样的效果。什么是Model Binding?Model Binding的作用就是将Request请求中包含的散乱参数,根据接受请求的Action方法的参数列表,自动智能地构建这些参数的过程。问题分析常见的对于Session依赖的代码:public ActionResult Index(){ var user = Session[“UserAccuont”];// 阅读全文
Asp.net MVC使用Filter解除Session, Cookie等依赖
2013-08-24 11:43 by JustRun, 9057 阅读, 18 推荐, 收藏, 编辑
摘要:本文,介绍了Filter在MVC请求的生命周期中的作用和角色,以及Filter的一些常用应用场景。 同时针对MVC中的对于Session,Cookie等的依赖,如何使用Filter解依赖。如果大家有什么好的Filter应用方法,希望一起多交流。阅读目录:一、Filter在MVC生命周期中的位置二、Filter常见的应用场景三、Filter的执行顺序四、MVC中常见的对于Session, Cookie的依赖五、使用Filter解除依赖1. Filter在MVC生命周期中的位置下面的图中, 一个完成的MVC的生命周期分为5个步骤, 对应图例中的1~5IIS中传递请求到程序MVC根据Routing来 阅读全文
Entity Framework返回IEnumerable还是IQueryable?
2013-08-15 23:02 by JustRun, 7027 阅读, 21 推荐, 收藏, 编辑
摘要:在使用EF的过程中,我们常常使用repository模式,本文就在repository层的返回值是IEnumerable类型还是IQueryable进行探讨。阅读目录:一、什么是Repository模式?二、IEnumerable还是IQueryable的区别三、实际检验IEnumerable和IQueryable的效率差别四、总结一, 什么是Repository模式?Repository是隔离在数据访问层和业务逻辑层之间的。它提供业务逻辑各种对象,使得业务逻辑代码不需要关心数据是如何存储和获取的。下图,是MVC中使用Repository模式的模型图。Controller调用Repositor 阅读全文
理解C# 4 dynamic(3) – DynamicObject的使用
2013-08-14 21:36 by JustRun, 9596 阅读, 8 推荐, 收藏, 编辑
摘要:上篇文章"理解C# 4 dynamic(2) – ExpandoObject的使用" 了解了ExpandoObject的基本使用。但ExpandoObject的问题就是它是一个万金油,什么都可以做,但是又都不专注。使用DynamicObject正好可以解决这个问题。这篇文章介绍DynamicJson是如何继承DynamicObject,包装一个用来处理Json的动态类型。阅读目录:一、JS可以灵活处理Json字符串二、DynamicObject分析三、DynamicJson代码四、总结一,JS可以灵活处理Json字符串看下面的代码,var jsonString='{ 阅读全文
开发和常用工具推荐清单
2013-08-12 23:43 by JustRun, 20810 阅读, 233 推荐, 收藏, 编辑
摘要:常说”工欲善其事必先利其器”, 下面的一些工具软件,必能提高你的工作效率。 开发相关 Resharper(收费) 如果说在VS中,必装的插件是什么,那么一定是Resharper.园中甚至有看到朋友因为老板不愿意掏钱买Resharper而辞职。(不过我觉得也对,如果老板认为工具比人值钱,跟这样的老板混 阅读全文
使用ExposedObject对Asp.net MVC中匿名类型的JsonResult做单元测试
2013-08-11 16:02 by JustRun, 1502 阅读, 1 推荐, 收藏, 编辑
摘要:返回JsonResult是MVC中的常见返回值类型,而且简单方便的方式是结合匿名类型一起使用。比如:public ActionResult PreviewEmail(){ …… return Json(new { HtmlContent = htmlContent, Title = title }, JsonRequestBehavior.AllowGet);}下面讨论一下,针对这个函数,如何单元测试。ExposedObject可以通过Nuget下载安装,介绍中已经说明了它的主要用处: 快速包装一个对象成dynamic,可以方便的访问对象的隐藏field和方法。这里的隐藏应该主要是... 阅读全文
Entity Framework在Asp.net MVC中的实现One Context Per Request(附源码)
2013-08-10 00:22 by JustRun, 4121 阅读, 10 推荐, 收藏, 编辑
摘要:上篇中"Entity Framework中的Identity map和Unit of Work模式", 由于EF中的Identity map和Unit of Work模式,EF体现出来如下特性:唯一性: 在一个Context的生命周期中,一个Entity只会有一个实例,任何对该实例的修改,即使这些改动没有保存到数据库中,修改都会影响到整个Context的生命周期。事务性: 所有对于Entity的修改,都会在调用SaveChange方法的时候,一起保存到数据库中,最终实现持久化。下面基于EF的上面特点,分析一下为什么需要在MVC中实现One Context Per Reque 阅读全文
Entity Framework中的Identity map和Unit of Work模式
2013-08-07 22:59 by JustRun, 2670 阅读, 8 推荐, 收藏, 编辑
摘要:阅读目录:一、什么是Identity map模式二、关于Identity map模式的验证示例三、Unit of Work 模式四、总结和注意的问题一,什么是Identity map模式Identity map是EF获取和缓存数据的模式。Identity map模式指的是任何数据都只会被加载一次,以map的形式缓存,以唯一的identity来再次获取这些数据。在EF中,就是在一个Context的生命周期中,所有查询过的数据都会缓存到Context的local中缓存。当再次访问这些数据的时候,就会以主键(identity)从缓存中获取这些数据。二,关于Identity map模式的验证示例看看下 阅读全文
旧项目如何切换到Entity Framework Code First
2013-08-06 23:57 by JustRun, 1224 阅读, 3 推荐, 收藏, 编辑
摘要:Entity Framework Code First固然是好东西,然而如果是已经存在的旧有项目,如何简单方便的使用切换呢?这里介绍一个VS的插件Entity Framework Power Tools Beta 3下载地址是:http://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d安装完成后,打开VS,在项目上右键,就能看到如下的选项了。点击以后,弹出一个数据库连接设置window, 选择项目的数据库,耐心等待一下,工具就能够为该数据库生成所有的实体类了。 阅读全文
为Asp.net MVC中的RenderSection设置默认内容
2013-08-01 23:45 by JustRun, 7630 阅读, 0 推荐, 收藏, 编辑
摘要:1. RenderSection的简单介绍Asp.net MVC中提供了RenderSection方法,这样就能够在Layout中定义一些区块,这些区块留给使用Layout的view来实现比如我们定义的Layout如下, 定义了一个”Footer”的section, 把这个section留给各个view去填充。 Sample Layout @RenderBody() @RenderSection("Footer") 在使用该Layout的view中,可以这样来填充“Footer” section.@{ ... 阅读全文