Edi Wang

All Posts 301


EntityFramework中使用.Include()做饥饿加载可能产生的性能问题

这几天在码新版博客程序,因为文章表字段太多,手贱把几个相关列拆分到了1-1的表中。比如Post 1-1 PostPublish,Post 1-1 PostExtension。但是性能突然比以前差了一点。 和这两张相关表直接交互的是这么一段代码: var query = Repository.Select().Include(p = p.PostExtension).Include(p = p.PostPublish) .Where(p = p.PostPublish.IsPublished && (authorName == null || String.Compare(p.Author, author...

EntityFramework SQL 性能

如何删除TFS上的WorkItem

我们知道,在TFS上万一建错了Work Item是删不掉的。最多把状态设置为Removed不会显示而已。但如果我们想真正删除一个Work Item就需要一些技巧了。 首先,你电脑上必须安装了Visual Studio(这个大部分用TFS的程序员都应该有吧),并且你登录TFS的账户必须是当前Collection的管理员。不然是没有权限删除work item的。 登录TFS后,找到要删除的work item ID,如下图: 然后启动VS的命令行工具 Developer Command,运行下面这条命令: witadmin destroywi /collection:"你的TFS Collection地址" /id:要删除的Work Item ID 等删除确认出来后,然后按“y”确认。就可以成功删除了。...

TFS

How to Change TFS Server URL in Visual Studio

今天又给大家带来一个实用装逼技巧。这个故事的起因是我无意中发现微软的TFS Service支持URL重命名了,非常牛逼,就像这样: 但带来的问题就是我们需要手动更改以前所有使用这个TFS地址的地方。Visual Studio就是首当其冲的了。很可惜,在VS里面,是没有办法直接编辑TFS地址的。 如果删掉重建的话,还需要把之前所有的本地文件夹都映射一遍,万一玩脱了就爆了。所以还是建议去注册表手动修改。 要修改的位置是: HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\TeamFoundation\Instances (如果你用的是VS2010,就把11.0换成10.0) 第一处:定位到原TFS地址的文件夹,把右边的Uri字段改掉。 第二处: 还有有个很阴巴的文件夹,藏在你的TFS文件夹下面,展开TFS文件夹,...

TFS Visual Studio

如何手动将一个普通.NET类库转换成可移植类库(Portable Class Library)

可移植类库是.NET程序员装逼的必备良药,至于它有多牛逼,我也不知道,大家可以自己看一下 http://msdn.microsoft.com/en-us/library/vstudio/gg597391%28v=vs.110%29.aspx 但是万一你装逼的时候手一滑,建成了一个普通的Class Library肿么办?普通青年的做法是删掉再建一个,这当然是OK的。但是,作为文艺青年,我们可以继续装逼:自己动手把这个类库转换成Portable Class Library。 为了演示,我先建一个普通的.NET类库:AVeryNBClassLibrary 在这个项目的属性页里面,自然是看不到Portable Class Library的选项的。 接下来,在项目上点右键,选择Unload Project,然后再次右键选择Edit AVeryNBClassLibrary.csproj...

.NET PCL Portable Class Library

如何在Windows Azure虚拟机上配置外网能访问的FTP服务器

昨天哥被功夫网墙出了翔,一怒之下打算用Windows Azure VM建个FTP来下东西,本来以为只要配置IIS和防火墙再打开Azure Portal的21端口就行的,结果又被Windows Azure爆出了翔(Blow up to shit)。在Azure上配置FTP没那么容易的。 首先,如何安装和正常配置一个FTP我不叙述了,大家可以自己搞定。Azure唯一特殊的就在于开防火墙端口。 1. 你需要知道你VM的外网IP,可以用ping命令,虽然Azure VM不允许被ping,但解析IP还是没问题的。 2. 将IP添加到FTP站点的FTP Firewall Support里面。 3. 由于Data Channel Port是在IIS Root Node上被锁住的,所以还要回IIS Root去配端口范围。这些端口是FTP用来传输数据的(FTP居然不是只用21端口的,虽然...

IIS VM FTP

Windows 8上IIS8部署WCF服务报错的解决办法

今天被IIS爆出翔了,写了个WCF Service,部署到IIS上,本来觉得是很简单的事,结果爆了: 未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“System.ServiceModel.Activation.HttpHandler”。 由于我的IIS是安装.NET Framework和VS以后才装的,ASP.NET也没装上,所以一般情况下,只需要运行那个众所周知的“aspnet_regiis -i”命令就行了。但是Windows 8上这个命令是爆的。。。 正确的解决办法是,除了在Windows功能-Internet信息服务-应用程序和开发中选择ASP.NET,还需要在.NET Framework 4.5 高级服务-WCF服务下...

ASP.NET IIS WCF

如何在公司Http代理后使用NuGet官方源

有些公司上网使用的是Http代理。默认情况下,VS是无法访问外部网络的。如果要使用NuGet,通常只能在局域网里架一个自己的NuGet服务器。但这种方法不论是package的数量还是更新频率都远远不如官方NuGet。所以有必要想个办法通过代理访问NuGet官方源。 NuGet的官方源地址是:https://nuget.org/api/v2/ 在VS的设置页面中可以配: 确认这个地址无误后,需要手动对VS的两处设置做更改,才能让VS用代理访问外部网络。 首先,关闭VS。打开VS安装目录,比如:D:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE 下的“devenv.exe.config”。 然后修改System.Net节点如下,proxyaddress改成你自己的代理地址。...

NuGet Proxy 代理

Windows Azure部署NuGet服务器爆掉的解决办法

因为公司网络的限制,没有办法访问NuGet的官方地址 https://nuget.org/api/v2/ 。所以我只能在Windows Azure上搞了个私有的NuGet服务器。本地测试一切正常,但是部署到Azure以后,查看package list的时候爆了: 根据提示,只要更改web.config的一个配置就行: 然后在VS中重新部署网站到Windows Azure,因为是差异部署,只需要覆盖web.config就行。很快我们就能看到效果了: 至于如何自己建一个NuGet服务器,方法也非常简单。只要创建一个空的ASP.NET Web Application,然后添加NuGet.Server包就OK了。最后把你需要的NuGet包文件(.nupkg)扔到网站的Packages目录下就行。...

IIS Web.Config NuGet Azure

Windows Azure中如何将SQL数据库转移到别的Subscription下

今天本屌丝怀着无比兴奋的心情,去参加了微软在上海举办的Azure训练营活动。又得到了一个Azure账户,并且也感受到了人类的希望。自从用了Azure以后,我逼格提升了,博客服务稳定了,就连三观也恢复了!妈妈再也不用担心HTTP 503了! 拿到新账户以后,我把Co-Administrator交给了我outlook.com上的的主账户。这样我用outlook账户登录,就能看见除了猿来的MSDN Subscription以外的另一个账户了。并且可以在一个账户中集中管理所有的内容,屌炸天了!#微软,人类的希望# 那么,在实际场景中,不同的Subscription可能是不同的人持有的,如果我们想把现有账户中的Azure Service转移到别的账户中,肿么办呢?如果重新部署的话,意味着风险和服务中断。幸好,光荣、伟大、正确的微软已经给我们提供了这么一个选项,能够在几秒内平稳将服务迁移到别的...

SQL Azure Cloud Azure MSDN Subscription

使用PowerShell操作Windows Event Log

PowerShell是个很牛逼的命令行工具,在Windows 7以后的系统里都默认自带。学会了PowerShell就可以提升逼格,让妹子崇拜。今天就教大家用PowerShell操作Windows的Event Log。 首先,启动PowerShell很简单,只需要在开始菜单里输入Power,就能找到了(Windows 8用户可以直接在开始屏幕里搜索Power)。 启动PowerShell后,你可以看到一个这样的界面。和CMD不同,它是深蓝色背景的,并且路径前多了PS前缀。看起来很厉害的样子: 有用程序写过Windows Event Log的童鞋都知道,我们的首要任务是创建一个Log和一个Source。PowerShell里语法如下: new-eventlog -LogName 日志名称 -Source 源名称 比如,我们创建一个Name为Game,Source为CS的Log...

Windows PowerShell EventLog