代码改变世界

阅读排行榜

T4+VSIX 打造Visual Studio 2010 中的Entity代码生成自定义工具(上)

2011-03-07 23:18 by 落小呆, 3761 阅读, 收藏,
摘要: 首先简单介绍下T4(Code Generation and Text Templates),也就是有一些文本模板和控制逻辑组成的混合体,可以使用这些模板生成程序中的部分源代码。在Visual Studio中这些模板只是简单的文本而已,那么是如何解析这些文本生成代码文件的呢?生成的关键就在于文件的“自定义工具”属性,在Visual Studio中“文本模板”的后缀为.tt,添加“文本模板”文件,查看文件的属性,会发现“自定义工具”属性值为“TextTemplatingFileGenerator”,如下图所示:尝试修改其他文本文件的“自定义工具”属性为“TextTemplatingFileGene 阅读全文

建议避免将Entity查询结果直接当IEnumerable使用

2011-05-12 22:34 by 落小呆, 3267 阅读, 收藏,
摘要: 使用Entity Framework查询当然是必不可少的,但有时不小心可能很简单的查询也会导致异常。 下面用EF4.1做个示例简单演示下异常发生的场景: 1: using (var context = new DemoContext()) 2: { 3: var users = context.Users.AsEnumerable(); 4: foreach (var user in users) 5: { 6: //其他查询逻辑 7: var test = context.Users.FirstOrDefault(); 8: } 9: }逻辑比较简单,就是首先查询一个User列表,并当作IE 阅读全文

T4+VSIX 打造Visual Studio 2010 中的Entity代码生成自定义工具(下)

2011-03-17 23:21 by 落小呆, 2860 阅读, 收藏,
摘要: 在上一篇文章中主要介绍了如何开发根据“文本模板”生成代码的自定义工具,后面有人反应说写得比较混乱,看完了也不知道说啥,自己也回头去看了下,文章的讲述的思路确是存在比较大的问题,所以进行了修改,如果还有什么疑问或者意见希望能够提出来,那么接下来继续如果在前面开发的自定义工具的基础上进行修改,变成ADO.NET Entity的实体生成自定义工具。 在这之前首先简单介绍下Entity实体代码生成的过程,打开测试项目,添加新项“ADO.NET 实体数据模型,如下图所示: 点击【添加】按钮后,会提示“选择模型内容”,一种是“从数据库生成”,另外一种是“空模型”,考虑到只是测试实体生成而已,直接选择空模型 阅读全文

ASP.NET MVC 3—一切的开始MvcHandler、MvcHttpHandler

2011-05-25 22:42 by 落小呆, 2513 阅读, 收藏,
摘要: 在ASP.NET MVC3里面,一次用户请求是如何开始的呢? 如果下载了MVC的源代码进行调试,一般来说会发现开始于MvcHandler,简单看下MvcHandler的代码,主要就是通过控制器的工厂接受控制器的实例,并使用控制器进行进一步处理,那么MvcHandler是如果被创建,如何被调用执行的? 首先看看MvcHandler的构造函数,是没有无参的构造函数,显然看来MvcHandler单干是有点难度了。直接查找MvcHandler的所有引用,很容易在MvcRouteHandler中可以找到: protected virtual IHttpHandler GetHttpHandler(Req 阅读全文

Moq中带ref参数方法的Callback

2011-04-21 23:14 by 落小呆, 1778 阅读, 收藏,
摘要: Moq用来干啥的我想大家都清楚,在此我就不啰嗦,最近在使用的时候,当mock对象的方法的参数带ref关键字时感觉压力很大。 首先来重现一下案发现场,首先定义我们需要mock的接口:1publicinterfaceITestInterface2{3stringTestMethodWithRef(refstringrefStr,stringstr);4}接下来我们mock我们定义的接口的方法TestMethodWithRef,并指定方法被调用之后执行委托操作:1[TestMethod]2publicvoidRef_Param_Test()3{4varmock=newMock<ITestInt 阅读全文