All Posts
12/22/2012 1:59:11 AM
很久以前,微软就推出了在线版的TFS服务(tfspreview.com),当年还是preview,现在已经是正式版可以在线免费使用了。我很久之前也创建了几个测试用的project在里面,结果现在删不掉了。 可以确定的是,不论在网页版TFS的操作界面上,还是Visual Studio 2012里,都找不到删除Team Project的操作。经过一番谷歌,删Team Project得到CMD里进行。 工具叫做TFSDeleteProject.exe,在你的VS安装目录的这个位置,比如: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE 具体介绍可以看MSDN上的这篇文章:http://msdn.microsoft.com/en-us/library/ms181482%28v=vs.110%29.aspx 操作如下: …
12/15/2012 6:18:15 AM
NuGet 是.NET程序员熟知的给.NET项目自动配置安装library的工具,现在已经整合在了VS2010 SP1和VS2012里。但有时候,尤其在某些公司内部,因为公司防火墙,VS是没办法连接NuGet服务器的。所以我们需要自己架设一个私服。 一、网站构建 首先,确保你的机器在互联网上,并且能够访问NuGet服务器。 创建一个空的ASP.NET网站,选择Framework4(因为考虑到部署问题,很多服务器还没有装.NET4.5,所以我们只能选4) 接下来,用NuGet为这个Web Project安装“NuGet.Server”库。这也是为什么我们需要这台机器能够连接互联网的原因。 安装成功后,你的Solution会变成这样一个结构。并且不需要写任何代码或更改任何配置,它已经可以运行了。但是注意,Packages里只有一个readme.txt,这个目录是用来放NuGet包的。所以现 …
12/9/2012 11:10:07 AM
自从我用了EF,每次都很关心是否有潜在的性能问题。所以每次我写LINQ查询,都会使用SQL Profiler看一下实际生成的SQL语句,以便发现潜在的性能问题。也强烈建议大家这么去做,以免日后软件大了出了问题很难查。 一、只选择某列或某些列 有些时候,在C#里写LINQ虽然看着舒服,但性能不一定好,所以有必要做一些调整。比如这种情况: 我需要知道一篇文章的点击数,仅此而已,我可能会写: context.Post.FirstOrDefault(p => p.Id == postId).Hits; 或者: context.Post.Find(postId).Hits; 我期待着他们只去数据库里筛选Hits这一列的数据,然而,通过SQL Profiler会发现,这两条语句居然把全部列都给select出来了,访问Hits的操作实际是在内存中进行的。 虽然小表看不出性能问题,但万一你的表里有一列是存 …
12/1/2012 12:41:59 AM
最近在码下一版的博客,其中有个更新就是把Entity Framework升级到5.0。当初建博客的时候是用VS2010自带的EF4的。从4.0升级的过程必须手动完成,通过NuGet的升级,只能自动撸4.1以上的版本。
昨天爆了很久,终于把网站弄得可以运行了。下面分享经验。
第一步:从NuGet安装Entity Framework 5.0
首先,对现有的EF4.0项目,什么都不要改,也不要删。直接从NuGet安装EF5。如果你是.NET4的项目,那实际上安装的是4.4版的DLL,所以EF5的枚举类型是不可以用的。如果你已经升级了.NET4.5,那就是完完全全的EF5。
NuGet会自动给你添加引用以及配置相关的config文件。
第二步:更新EDMX
打开现有的EDMX文件,在空白处点击右键,选择“Add Code Generation Item”
新版EF是用T4模板 …
11/9/2012 2:26:26 AM
首先说明,本文用的是非常屌丝的办法,针对SQL Server Membership的实现的一个很有局限性的权限模块,而不是真正对ASP.NET Membership本身的拓展。不喜慎入。 一、为什么要给Memebership增加权限系统 我们知道,ASP.NET Membership是基于Role的,其实是个RBAC,没有权限(Rights)功能。也就是说,我们只能够指定某个Role可以做什么事,丧失了一定的灵活性。比如,网站后台有个编辑文章的功能。如果基于Role判断,我只能认为:所有Admin、Editor、Teacher可以编辑文章。在MVC3里,可以用Authorize(Role=”Admin, Editor, Teacher”)的属性做到这一点。然而如果想要动态可配,则比较难了。然而,如果是基于Rights的验证,那我就可以认为:所有具有Edit权限的Role可以编辑文章。这样的 …
10/31/2012 5:01:23 AM
每次和人讲解C#的委托以及Lambda都比较费劲,其实概念是非常简单的,但不好描述。今天写了一个非常简单粗暴直观的例子,来给大家看一下Labmda、委托的用法和关系,顺便也演示了拓展方法、对象初始化器的使用。 我描述的是这样的场景:有3个屌丝,他们每个人都要做两件事,打魔兽和撸撸睡。 首先,我定义了一个屌丝类,描述一个屌丝对象: class Diaos { public Guid Id { get; set; } public string Name { get; set; } } 然后,我们要创建3个屌丝,以往我们用C#来让完成这件事通常会这样写: List diaoses = new List(); Diaos d1 = new Diaos(); d1.Id = Guid.NewGuid(); d1.Name = "Michael"; diaoses.Add(d1); …
10/5/2012 3:11:00 AM
前不久我把博客升级到了VS2012的solution,结果bin deploy爆掉了。以前在VS2010里,如果打了SP1补丁的话,对MVC3项目点右键,会多出一个菜单,叫做“Add Deployable Dependencies”, 它会在你的项目文件夹里建一个叫做“_bin_deployableAssemblies”的特殊文件夹,里面放的是MVC3项目的几个dll。在publish的时候会自动拷贝到bin目录里。具体可以参考这篇文章:http://haacked.com/archive/2011/05/25/bin-deploying-asp-net-mvc-3.aspx 然而,在VS2012里,这个选项居然木有了。我查阅了官方的说明,说明中居然写着VS2012会自动进行bin deploy。可是我的博客升级以后就再也没自动过。但是,如果用VS2012新建一个MVC3项目,却是可以自 …
9/24/2012 9:10:17 AM
现在已经快10月了,除去在嘉兴培训的日子,进Infosys工作已经一年了。就这一年里的感受做一些回顾和总结。我会以客观、公正的角度描述这一年的事情,给想要进Infosys的毕业生做一个参考。 1.刚毕业的人不要抱怨工资问题,首先要学会做事 我和我同学比较特殊,是毕业前就来公司的,这可能是学校为了提高就业率而计划的,所以我们是和别的学校的同学一起从嘉兴培训中心毕业到公司的,但转正比他们要晚一年,之前均算作实习。 在Infosys实习,工作时间和内容和正式员工是一样的。实习工资是1800,转正以后是3300(税前)。不少人抱怨工资低,其实我认为,实习的工资不算低,而且说句公道话,刚大学毕业的学生,有几个会做事的?特别是眼高手低的尤其让人讨厌。不谦虚学习,还经常请假,甚至旷工,这态度就不让人喜欢。我本人,不谦虚的说,一样刚大学毕业,但我能做的事很多,但我在态度上不那么娇惯。我想,公司付你钱,不管 …
9/21/2012 7:31:13 AM
我们知道,内存分页效率很低。并且,如果是WebForm的项目,页面上会有巨型ViewState,这必然不好。我自己博客用的是一个存储过程做的分页,用到现在都挺好,没有任何效率问题。后来想到,既然项目里有Entity Framework,那为什么不利用EF完成分页呢~ 稍做研究之后发现,EF分页其实很简单。不过一样写文章了,光贴代码是不负责的,还是得稍微介绍一下相关的知识。 一、页数计算 关于分页的基本原理,网上有很多文章,我就不多叙述了。但我发现很多介绍分页的文章里,计算页码公式都掐掉了,广为流传的版本是: totalPage = totalRecord / pageSize + 1 稍微推敲一下就会发现,这个公式在totalRecord和pageSize正好整除时,会多一页。比如10条记录,每页5条,应该是2页的,但结果是3。然而,不写+1又不行,因为要考虑到记录总数小于页尺寸的情况。现 …
9/20/2012 12:16:27 PM
First of all, I don't recommend storing images in the database, especially in a web project. Because file systems can provide static file access and get many benefits such as performance. Storing images in the database has certain limits.
But if you must store images into SQL Server, here's how to do it.
SQL
Image files are in fact, binary data. SQL Server provides us the image type for …
Edi Wang
.NET and Azure Developer