摘要: .NET程序员都知道,如果我们重写一个类的Equals方法而没有重写GetHashCode,则VS会提示警告 :“***”重写 Object.Equals(object o)但不重写 Object.GetHashCode() 。但是,为什么重写Equals一定要同时重写GetHashCode呢?微软的解释是:GetHashCode基于适合哈希算法和诸如哈希表的数据结构的当前实例返回一个值。两个相等的同类型对象必须返回相同的哈希代码,才能确保以下类型的实例正确运行:HashTableSystem.Collections.SortedListDictionarySortDictionarySort 阅读全文
posted @ 2013-08-12 22:49 Gyoung 阅读(5897) 评论(4) 推荐(4) 编辑
摘要: 因要一台电脑做WCF服务的测试服务器,但只有一个台式机可能,配置就不用说了,2G内存。之前装的是win7,卡得要死。于是就想把它装回XP系统。但在网上找来找去,都是ghost xp,之前还很怕ghost版本的无法安装IIS。但找不到原生的xp镜像文件,只好硬着头皮试试了(后来证明这担心是多余的)1 先下载ghost xp sp3 镜像文件文件查询一下,网上很多。安装用windows pe系统进入,应该也很快。2 下载IIS 6.0。也是百度,共享一下我下的链接:http://www.crsky.com/soft/22393.html下载后解压。打开控制面板--添加/删除程序--添加/删除Win 阅读全文
posted @ 2013-07-30 21:12 Gyoung 阅读(1605) 评论(0) 推荐(0) 编辑
摘要: 介绍这篇文章我将介绍如何利用ASP.NET来加密和解密Web.config中连接字符串背景描述在以前的博客中,我写了许多关于介绍Asp.net, Gridview, SQL Server, Ajax, JavaScript等的文章。大多数情况下,我都把数据库的连接字符串放在了web.config中。其中包含许多敏感信息,包括连接数据库的用户名密码等。然而我们在web.config和machine.config中以纯文本的方式保存密码安全吗?如果我们的程序只是部署在内部服务器中,这应该没什么问题。但如果我们的程序是运行在共享主机上面,那我们应该提高安全等级了。ASP. NET 2.0提供了一个保 阅读全文
posted @ 2013-07-16 22:51 Gyoung 阅读(17135) 评论(6) 推荐(17) 编辑
摘要: 问题描述如果你在WCF中用Entity Framework来获取数据并返回实体对象,那么对下面的错误一定不陌生。接收对 http://localhost:5115/ReService.svc 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。有关详细信息,请参见服务器日志。这就是因为在返回数据的时候,序列化失败,导致WCF服务自动停止了。为什么会序列化失败为了方便说明,我们先做个示例来重现这个错误。默认情况下,Entity Framework为了支持它的一些高级特性(延迟加载等),默认 阅读全文
posted @ 2013-06-27 08:48 Gyoung 阅读(11456) 评论(16) 推荐(9) 编辑
摘要: 如果表中有数据,Oracle是不能修改其数据类型的。但可以通过新建一个临时列,将要修改列的数据复制到临时列中,删除原列再修改临时列的名字。这样说好像有点拗口,分步解说一下。 表AC_REG中有列:is_active,原来是字符类型的,目标是将它改为数值类型 blob转varchar2 UTL_RAW 阅读全文
posted @ 2013-06-19 18:14 Gyoung 阅读(3446) 评论(1) 推荐(2) 编辑
摘要: 在VS2010中,在类中点击右键,有一个创建创建单元测试命令,可以很方便的生成单元测试项目和代码。但不知道为什么VS2012反而没有这个功能。网上搜了一下,好在这个功能是可以通过配置打来的。传送门:http://www.cnblogs.com/WilsonWu/archive/2013/05/22/3092584.html但作者用的是英文的VS,我们来个汉化版本的。并说明一下需要注意的地方。1 打开 工具--自定义2 选择 上下文菜单--编辑器上下文菜单|代码窗口3 在这里我们可以看到“创建单元测试”这个菜单了,将它移到运行测试菜单下面4 关闭VS并重启 重启后再对着类名,点击右键,发现上下文 阅读全文
posted @ 2013-06-18 23:55 Gyoung 阅读(17126) 评论(15) 推荐(16) 编辑
摘要: 很多时候,我们的查询条件有多个,并且参数不一样,得到的查询条件也就不一样。这就要我们动态的生成查询条件,再把这些查询条件合并起来。网上找了这个类,可以很好的达到我们的要求。public static class PredicateBuilder { public static Expression<Func<T, bool>> True<T>() { return f => true; } public static Expression<Func<T, bool>> False<T>() { return f =& 阅读全文
posted @ 2013-06-14 22:22 Gyoung 阅读(5590) 评论(1) 推荐(1) 编辑
摘要: 为什么要说是伪实现,因为还做不到类似MsSql中那样完全的功能。Oralce中的数据库还是要我们自己手动去创建的。这里,我们舍掉了Model First中的EDMX文件,自己在代码里面写模型与映射关系,这又有点像是Code First模型了,所以我说它是一个伪实现。真正完全的Code First应该是要通过Oracle开发驱动来支持了。通过EF来连接Oracle数据库,前提是要下载ODP.NET驱动。Google一下就找得到了。模型 public class Student { public Student() { this.Teach... 阅读全文
posted @ 2013-06-12 16:48 Gyoung 阅读(8919) 评论(28) 推荐(12) 编辑
摘要: .NET程序中,可以利用Unity来实现AOP,用来进行日志、缓存或权限的处理。这里我们来写一个简单的程序,让其实现简单的AOP功能。1.使用NuGet,在项目中获取Microsoft.Practices.Unity。2.新建一个ITalk类及其实现 public interface ITal... 阅读全文
posted @ 2013-06-06 23:18 Gyoung 阅读(5336) 评论(6) 推荐(5) 编辑
摘要: 反射真是很好用的东东。因为公司要用Oracle数据库,而实体模型是现有的。于是就想着用反射来找到实体中的实体类和属性,然后来生成SQL脚本。贴一下代码: /// <summary> /// 生成SQL的方法 /// </summary> static void GenerateOracleSql() { //架构名称 string schemal = "GYOUNG"; //加载程序集 Assembly ase = Assembly.LoadFrom(... 阅读全文
posted @ 2013-05-22 23:32 Gyoung 阅读(1183) 评论(0) 推荐(2) 编辑
摘要: 一般的WCF服务可以通过设置配置文件中Timeout属性值来自定义服务的超时时间,但WCF服务没有配置文件,默认的超时是60s。但有时候,我们的查询时间超过60s,我们能不能通过自己来定义超时时间呢。答案是肯定的。RIA Services生成的代理类刚好是部分(partial)类,我们可以利用这一点来设置超时。先在Service项目中建一个类:WcfTimeoutUtility,这里设置超时方法/// <summary> /// Utility class for changing a domain context's WCF endpoint's /// Send 阅读全文
posted @ 2013-04-18 22:43 Gyoung 阅读(3236) 评论(10) 推荐(2) 编辑
摘要: 位置信息从何而来设备可以使用下列数据源IP地址三维坐标:GPS(Global Positioning System,全球定位系统);从RFID、Wi-Fi和蓝牙到Wi-Fi的MAC地址;GSM或CDMA手机的ID用户自定义的数据浏览器支持性检查 <div> <span class="info"> <p id="status"></p></span> </div> <script type="text/javascript"> if (navigator 阅读全文
posted @ 2013-04-13 23:29 Gyoung 阅读(5842) 评论(0) 推荐(0) 编辑
摘要: 浏览器支持性检测 var hasVideo = !!(document.createElement('video').canPlayType); alert(hasVideo);也可以在audio元素或video元素中放入备选内容,如果浏览器不支持该元素,这些备选内容就会显示在元素对应的位置。<video src="video.webm" controls> Your Browser does not support HTML5 video. </video>包含Audio元素的HTML界面<audio controls src 阅读全文
posted @ 2013-04-13 20:35 Gyoung 阅读(1758) 评论(0) 推荐(0) 编辑
摘要: SVG(Scalable Vector Graphics):可缩放矢量图形,一种二维图形表示语言。借助SVG,我们可以实现很多同Canvas API类型的绘制操作,但在Canvas元素上绘制文本的时候,字符会以像素的方式固定到上面。文本成为了图像的一部分,除非重新绘制Canvas绘制区域,否则无法改变文本内容。正因为如此,Canvas上面的文本无法被搜索引擎获取,而SVG上的文本却是可搜索的。例如,Google会对Web上的SVG内容中的文本进行索引。在页面中添加SVG内联方式:像HTML中的其它元素一样使用,在此基础上可以编写HTML,JavaScript和SVG的交互应用。<body 阅读全文
posted @ 2013-04-09 23:36 Gyoung 阅读(10093) 评论(0) 推荐(9) 编辑
摘要: 检测浏览器支持情况 <script type="text/javascript"> try { document.createElement("Canvas").getContext("2d"); document.getElementById("support").innerHTML = "OK"; } catch (e) { document.get... 阅读全文
posted @ 2013-04-08 00:10 Gyoung 阅读(12866) 评论(4) 推荐(3) 编辑
摘要: 平时我们如果要用到委托一般都是先声明一个委托类型,比如:private delegate string Say();string说明适用于这个委托的方法的返回类型是string类型,委托名Say后面没有参数,说明对应的方法也就没有传入参数。写一个适用于该委托的方法: public static string SayHello() { return "Hello"; }最后调用: static void Main(string[] args) { Say say = SayHello; ... 阅读全文
posted @ 2013-04-04 18:00 Gyoung 阅读(23459) 评论(31) 推荐(76) 编辑
摘要: 每个聚合都有一个根实体(聚合根,Aggregate Root),这个根实体是聚合所表述的领域概念的主体,外部对象需要访问聚合内的实体时,只能通过聚合根进行访问,而不能直接访问。从技术角度考虑,聚合确定了实体生命周期的关注范围,即当某个实体被创建时,同时需要创建以其为根的整个聚合,而当持久化某个实体时,同样也需要持久化整个聚合。比如,在从外部持久化机制重建“客户”对象的同时,也需要将其所拥有的“信用卡”赋给“客户”实体(具体如何操作,根据需求而定)。不要去关注聚合内实体的生命周期问题,如果你真的这么做了,那么你就需要考虑下你的设计是否合理。领域模型需要根据领域概念分成多个聚合,每个聚合都有一个实 阅读全文
posted @ 2013-03-27 15:16 Gyoung 阅读(2418) 评论(0) 推荐(1) 编辑
摘要: DTO即数据传输对象。之前不明白有些框架中为什么要专门定义DTO来绑定表现层中的数据,为什么不能直接用实体模型呢,有了DTO同时还要维护DTO与Model之间的映射关系,多麻烦。然后看了这篇文章中的讨论部分才恍然大悟。摘两个比较有意义的段落。表现层与应用层之间是通过数据传输对象(DTO)进行交互的,数据传输对象是没有行为的POCO对象,它的目的只是为了对领域对象进行数据封装,实现层与层之间的数据传递。为何不能直接将领域对象用于数据传递?因为领域对象更注重领域,而DTO更注重数据。不仅如此,由于“富领域模型”的特点,这样做会直接将领域对象的行为暴露给表现层。需要了解的是,数据传输对象DTO本身并 阅读全文
posted @ 2013-03-23 15:55 Gyoung 阅读(77780) 评论(20) 推荐(57) 编辑
摘要: 点我存放自己的一些学习资料,大多数是来算博客园的大牛们,方便自己存档。有需要的朋友也可以看看。WCF博客:WCF之旅WCF从理论到实践牛人:Artech、张逸、翁玉礼NHibernate博客:NHibernate之旅牛人:李永京微软类库博客:微软企业库MEFXAML博客:XAMLKnockout应用开发指南Entity FrameworkEF Code FirstLINQ博客:LINQ体验系列文章LINQ之路牛人:lifepoem、李永京JQuery博客:从零开始学JQuery牛人:zhangziqiuASP.NET MVC博客:ASP.NET MVC入门系列、从零开始学习ASP.NET MV 阅读全文
posted @ 2013-03-01 21:14 Gyoung 阅读(1431) 评论(3) 推荐(4) 编辑
摘要: 前面一个博客:也来学学插件式开发中很多朋友留言说可以用MEF来实现。于是我就试着用MEF实现了一下。步骤和上一篇差不多,只是加载插件的方式有所不同。这只是一个自己的示例程序,肯定有很多不足之处,欢迎拍砖。MEF如何工作?MEF主要是通过Import与Export特性来定义导入与导出部件。程序在运行的时候会将具有相同接口的导出的实例化,赋给导入。MEF程序设计指南一:在应用程序中宿主MEF这篇文章有一个简单的MEF例子,大家可以参考一下。所以,在这里,插件就是导出,我们在程序中要定义具有和插件相同接口的导入。但是这里有一个问题,一般的导入与导出是一对一的,但我们的工具箱中和插件的关系明显是一对多 阅读全文
posted @ 2013-02-26 19:57 Gyoung 阅读(6359) 评论(8) 推荐(7) 编辑