「译」LINQ: Building an IQueryable Provider - Part II: Where and reusable Expression tree visitor

英文原文是Matt Warren发表在MSDN Blogs的系列文章之一,英文渣渣,翻译不供参考,请直接看原文

在上篇文章中,我们已经打好了基础,定义了可重用的IQueryableIQueryProvider,它们分别是Query<T>类和QueryProvider类,现在我们来构建一个真正有用的提供程序。我之前说过,一个查询提供程序所做的事就是执行一些“代码”,这些“代码”使用表达式树而不是真正的IL语言来定义。当然,这并不一定是传统意义上的执行。比如说,LINQ to SQL就是将查询表达式翻译为SQL然后送到服务器中去执行的。

我下面给出的示例与LINQ to SQL有点类似,都是针对一个DAO provider对查询进行翻译和执行。但是,我要做个免责声明,在任何意义上,我给出的示例都不是一个完整的提供程序。我只会翻译Where操作,并且只支持在谓词中使用一个字段引用和一些简单的运算符,除此之外没有任何复杂的东西。以后我可能会扩展这个提供程序,但现在仅用于说明的目的。所以不要以为复制粘贴就能得到高质量的代码。

这个提供程序主要做两件事:

  1. 将查询翻译为SQL命令
  2. 将执行命令得到的结果转换为对象
阅读全文 »

「译」LINQ: Building an IQueryable Provider - Part I: Reusable IQueryable base classes

英文原文是Matt Warren发表在MSDN Blogs的系列文章之一,英文渣渣,翻译不供参考,请直接看原文

这段时间我一直打算写一个系列的文章来介绍如何使用IQueryable构建LINQ提供程序。也一直有人通过微软内部邮件、论坛提问或者直接给我发邮件的方式来给我这方面的建议。当然,通常我都会回复“我正在做一个详尽的Sample来给你们展示这一切”,告诉他们很快所有内容都会发布。但是,相比仅仅发布一个完整的Sample,我觉得一步一步循序渐进地阐述才是一个明智的选择,这样我才能深挖里面的所有细节,而不是仅仅把东西扔给你们,让你们自生自灭。

我要说的第一件事是,在Beta 2版本里面,IQueryable不再只是一个接口,它被分成了两个:IQueryableIQueryProvider。在实现这两个接口之前,我们先过一遍它们的内容。
使用Visual Studio的“go to definition”功能,你可以看到下面的代码

阅读全文 »

造轮子:一个 ORM 持久层框架

这个想法其实已经在我心里很久了,自从对体检系统的框架伸出我的魔爪开始,我就一直想写一个属于自己的持久层框架。最近正好在学习 Hibernate,这个潜藏在心中的想法便越来越强烈。于是我迫不及待地开始设计、编码,只是无奈应了这句话:

读书太少而想太多。

经过几天夜以继日的编码,虽然终于做出了这个勉强能够使用的原型,但还是有许多问题未能解决。这个框架现今只有最基本的功能,如果遇到的问题有待解决,将会实现集合映射、关联映射以及与之配套的懒加载功能。代码已经托管在了我的GitHub(vincentlauvlwj/FrameDAL),要是有大神能进去指点指点就再好不过了。

现在,请允许我拿这个可能连半成品都算不上的东西来强行装个B

Features

  • 支持对象-关系映射,以面向对象的方式操作数据库。
  • 多种主键生成策略。支持 UUID,自增长,序列等。。
  • 多数据库支持,无缝切换。在不同数据库之间切换只需更换配置文件即可,不用改动任何代码
  • 扩展性强,面向接口编程,可随时增加对其他数据库的支持
  • 支持一级 Session 缓存,减少连接数据库的次数,避免频繁的建立连接操作
  • 支持命名查询,把 SQL 写在配置文件中,实现业务逻辑代码与SQL的解耦
  • 支持事务处理。
  • 支持多线程操作。
阅读全文 »

使用GitHub Pages搭建独立博客(三) - 添加一些扩展功能

更多特性,参见 GitHub Pages Features - User Documentation

添加评论功能

之前说过,GitHub Pages 只能托管静态网页,是不能有数据库的。在这种限制下,我们要增加评论功能就不能自己造轮子了,只能使用别人造好的轮子。Disqus 是一个比较好用的第三方评论插件,它支持使用各种社区账号登录,比如 Twitter,Google+ 等等。然而,由于一些奇奇怪怪的原因,国人并没有几个人拥有这些社区的账号,再加上 Disqus 是国外的网站,访问速度也是个硬伤,于是,造就了 Disqus 很不愉快的使用体验。所以我用了多说,这是一个和 Disqus 几乎一模一样的东西,但是它不仅有访问速度,还能使用国内的主流社交账号登录,如微博,QQ 等,缺点就是界面比 Disqus 丑

阅读全文 »

使用GitHub Pages搭建独立博客(二) - 使用Jekyll生成静态网站

Jekyll的详细文档,参见 Jekyll • Simple, blog-aware, static sites

开始使用Jekyll

Jekyll是一个简单而又强大的静态博客生成器,它可以使用你设定的模板生成一个完整的HTML站点,而你只需要专注于博文的写作,不需要因为新增一篇博文而到处修改你的HTML文件。另外,GitHub Pages也支持Jekyll,每一个GitHub Page站点都是运行在Jekyll之上的,你只需要向GitHub推送你的Jekyll模板代码,GitHub就会帮你生成一个静态网站。

阅读全文 »

使用GitHub Pages搭建独立博客(一) - 开始使用GitHub Pages

这篇文章很多内容都是从GitHub官网翻译而来,详情可访问 GitHub Pages Basics - User Documentation

前言

GitHub Pages是托管在GitHub服务器上的公共页面,我们可以在上面托管自己的静态页面(只能是静态页面,不支持JSP,ASP等),这些静态页面是由我们自己任意设计的,也就是说,我们可以把它做成一个信息发布网站,个人网站,OR博客。这个系列的文章简单介绍了如何使用GitHub Pages和Jekyll搭建自己的独立博客,其中有很多内容可以从GitHub官网获得,也可以从搜索引擎搜到,我写这个也只是总结一下自己的经验而已,如若有误,欢迎在评论区指正。

这些文章假设读者已经会使用Git,GitHub和Markdown,故不赘述。欲学习Git,可访问Git教程 - 廖雪峰的官方网站;了解GitHub中Markdown的使用,可访问Writing on GitHub - User Documentation

阅读全文 »

体检系统工作日记 - 无形装逼,最为致命~~~

论如何与客户斗智斗勇

2015-08-24

  • DONE: 组合设置中上移下移按钮以检查类型为准,是否增删项目却是以科室为准
  • DONE: 非检验科检验类组合在体检录入中无法录入
  • DONE: 增加刷新导入结果的功能
  • DONE: WORKLIST.IS_CONFIRM需要再确认 — 已确认,不需要将此字段改为1
  • DONE: 体检录入中是否需要录入建议,再确认 — 已确认不需要
阅读全文 »

Pure Android 是否比 MIUI 或 Flyme 体验更好?

这篇文章转载自知乎

哎呀~不要站队嘛。其实这是一个很有意思的题目,让我们一点点来看

哦对,谢妖~。本人是Nexus 5用户,系统当然是Pure Android KitKat啦(臭谷粉!点Down!喂喂喂我还没给结论呢)
毕竟是回答问题嘛,先给一个明确的答案

否。(对中国用户而言,Pure Android 并不比 MIUI 或 Flyme 体验更好。
阅读全文 »

Hello, World!

“Yeah It’s on. ”

我的第一个个人站点就这么开通了。
作为一个程序狗,终于实现了一直以来想要一个个人网站的愿望,心里有点小激动呢

阅读全文 »