C军

不玩博客了!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  496 随笔 :: 0 文章 :: 634 评论 :: 571万 阅读

09 2013 档案

摘要:人在碰到自己不懂的时候,很容易就觉得自己是最差的。这个时候,无论碰到谁,可能即使水平比自己更差的,也会毫不犹豫地跟着别人的脚步走,完全不会自己去独立思考,想自己的路。 比如在学习中,碰到自己不懂的问题,就会很容易地照着同学的抄。 比如在工作中,碰到自己不懂的问题,就会很容易地按着同事的方法去做。 比如在行业中,碰到自己不擅长的领域,很容易地就跟着同行的步骤去走。 而事实上,这是很危险的做法。当你一直跟着别人的脚步走,你永远不可能超越别人。在我以往的经验当中。在自己不熟悉的领域,总是喜欢跟着别人的脚步去走,比别人牵着鼻子走,然后还以为自己很牛B,对某一个领域的了解有多么深。殊不知,有... 阅读全文
posted @ 2013-09-30 17:51 逆心 阅读(1230) 评论(2) 推荐(4) 编辑

摘要:System.Object在.Net中是所有类型的基类,任何类型都直接或间接地继承自System.Object。没有指定基类的类型都默认继承于System.Object。基类特性 正由于所有的类型都继承于System.Object。因此,所有的类型都具有下面这些特性: GetType()方法,获取对象的类型。 Equals、ReferenceEquals和==,判断对象是否相等。 ToString()方法,获取对象的字符串信息,默认返回对象带命名空间的全名。 MemberwiseClone()方法,对象实例的浅拷贝。 GetHashCode()方法,获取对象的值的散列码。 F... 阅读全文
posted @ 2013-09-29 21:47 逆心 阅读(3197) 评论(0) 推荐(1) 编辑

摘要:多态关联 先说明什么是多态关联。 假设我们有一张地址表,其中的地址可能是对于User中的,也可能是对于Orders中的。 以上,只是举个例子,实际的例子还有很多,比如我们要设计一个内容管理系统(CMS),我们的CMS有一个文章表,一个软件表。还要求支持评论,那么我们的评论表的Id是引用文章表还是引用软件表呢? 对于以上例子的缺点,貌似书本上有故意为此多态关联的模式走软的嫌疑。缺点不说了,主要是查询麻烦,其次不能够支持外键约束。解决方案 交叉表 对于这种需要外键引用为多个表的情况,可以建立一张交叉表。让Address不再依赖Orders或Users。 优点: 引用完整性支... 阅读全文
posted @ 2013-09-28 23:34 逆心 阅读(2446) 评论(1) 推荐(0) 编辑

摘要:可变属性的需求:我们需要在数据库里面存储很多电器,比如电视,冰箱等等。通常,在程序中,我们的类图为:EVA设计 对于这种继承下来的可变属性时,有一种办法是创建另外一张表,将属性当成行来存储。 其中存储的数据类似下面这样: 这样的设计称为:实体-属-值,简称:EVA,或者又叫开放架构、无模式。 这种设计有如下3种好处: 1、这两张表的列都很少。 2、新增的属性不会对现有的表结构造成影响,不需要新增列。 3、避免由于空值而造成的表内容混乱。 但是这样也有如下缺点: 1、查询属性 本来,我们想要按出厂日期查询,只需要: SELECT ElectricId,DateO... 阅读全文
posted @ 2013-09-28 18:39 逆心 阅读(4528) 评论(1) 推荐(2) 编辑

摘要:首先,当然是安装MemCache服务器端了。 然后配置过程,仅仅两个问题。 1、NHibernate要与NHibernate.Cache的版本要一致。否则,NHibernate.Caches.MemCache.MemCacheProvider无法实例化。 2、要引用log4net,否则Memcached.ClientLibrary.SockIOPool无法实例化。 App.config: NHibernate.Dialect.MsSql2008Dialect NHibernate.Connection.... 阅读全文
posted @ 2013-09-25 00:24 逆心 阅读(1602) 评论(6) 推荐(1) 编辑

摘要:一、常用属性 CommandText 获取或设置要对数据源执行的 Transact-SQL 语句、表名或存储过程。 CommandTimeout 获取或设置在终止执行命令的尝试并生成错误之前的等待时间。 CommandType 获取或设置一个值,该值指示释 CommandText 是SQL语句,存储过程还是表操作。 Connection 获取或设置 SqlCommand 的此实例使用的 SqlConnection。 Parameters 获取 SqlParameterCollection。 Transaction 获取或设置将在其中执行 SqlC... 阅读全文
posted @ 2013-09-23 11:56 逆心 阅读(9450) 评论(1) 推荐(4) 编辑

摘要:一、常用属性 ConnectionString 获取或设置用于打开 SQL Server 数据库的字符串。 (重写 DbConnection.ConnectionString。) ConnectionTimeout 获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。 Database 获取当前数据库或连接打开后要使用的数据库的名称。 DataSource 获取要连接的 SQL Server 实例的名称。 PacketSize 用来与 SQL Server 的实例进行通信的网络数据包的大小,以字节为单位。 ServerV... 阅读全文
posted @ 2013-09-23 11:33 逆心 阅读(14359) 评论(1) 推荐(5) 编辑

摘要:在NHibernate的映射中,关于继承的映射策略有3种方式单表继承类表继承具体表继承 另外还有一种比较特别的多态映射隐式多态 下面分别来阐述NHibernate继承映射的各种策略要点。一、单表继承 单表继承的方式是,所有的字段都放在一个表中,用一个字段来区分子类。使用配置节点配置子类。 看DEMO,首先新建一张Animal表如下: 映射文件:Animal.hbm.xml: //discriminator-value用来标记表中哪些行是青蛙 映射文件:Fish.hbm.xml ... 阅读全文
posted @ 2013-09-22 21:55 逆心 阅读(2761) 评论(0) 推荐(2) 编辑

摘要:NHibernate过滤器相当于定义一个非常类似于类和集合上使用的where子句。ISession 中默认是不启用过滤器的,必须通过ISession.EnableFilter()方法显式的启用。 该方法返回被启用的IFilter的实例。这也支持链式操作。 过滤器主要的配置都在映射文件内完成。来看示例: 操作: static void Main(string[] args) { ISessionFactory _sessionFactory =... 阅读全文
posted @ 2013-09-22 09:41 逆心 阅读(1312) 评论(0) 推荐(0) 编辑

摘要:NHibernate也是能够操作存储过程的,不过第一次配置可能会碰到很多错误。一、删除 首先,我们新建一个存储过程如下: CREATE PROC DeletePerson @Id int AS DELETE FROM Person WHERE PersonId = @Id; 修改映射文件,添加删除对象的存储过程: DeletePerson ? 执行存代码: using (ISession session = sessionFactory.Op... 阅读全文
posted @ 2013-09-21 00:28 逆心 阅读(2419) 评论(0) 推荐(2) 编辑

摘要:在NHibernate中,可以把视图当表一样操作,只需要记住一点就是,视图是只读的,因此映射实体的setter应该改为protected。 新建一个视图如下: 持久化类: public class CountryPersonModel { public virtual int PersonId { get; protected set; } public virtual string PersonName { get; protected set; } public virtual string CountryName { ge... 阅读全文
posted @ 2013-09-20 23:56 逆心 阅读(1901) 评论(0) 推荐(0) 编辑

摘要:在上一篇的Linq to NHibernate的介绍当中,全部是namespace NHibernate命名空间中的IQueryOver<TRoot, TSubType>接口提供的。IQueryOver<TRoot, TSubType>这个借口实际上会被翻译成条件查询(Criteria Querie 阅读全文
posted @ 2013-09-16 23:24 逆心 阅读(2585) 评论(0) 推荐(0) 编辑

摘要:数据操作,在这里主要介绍INSERT、UPDATE、DELETE。我们在使用NHibernate的时候,如果只是查询数据,不需要改变数据库的值,那么是不需要提交或者回滚到数据库的。一、INSERT 通过调用ISession.Save()方法,然后同步同步到数据库。 Program.cs ... 阅读全文
posted @ 2013-09-14 21:56 逆心 阅读(5215) 评论(0) 推荐(1) 编辑

摘要:NHibernate的一级缓存,名词好像很牛B,很难。实际上就是ISession缓存。存储在ISession的运行周期内。而二级缓存则存储在ISessionFactory内。一、ISession一级缓存测试 ISession默认开启一级缓存,不需要任何配置。ISession缓存在ISession创建后就可以使用,以后每次通过此ISession操作数据时,ISession会检测自身是否缓存有相应的数据,如果有则直接返回。如果没有,这时才查询数据库返回,同时缓存到ISession。当释放ISession实例的时候,缓存自动销毁。 示例: 首先我们先开启配置文件中的show_sql节点: ... 阅读全文
posted @ 2013-09-11 21:13 逆心 阅读(3717) 评论(1) 推荐(2) 编辑

摘要:使用EasyUI最好的方法不是学会,所有的东西都敲一遍,你也没办法敲得完,而是找到一个好的文档。 http://files.cnblogs.com/kissdodog/jQueryEasyUI%E4%B8%AD%E6%96%87%E5%B8%AE%E5%8A%A9%E6%89%8B%E5%86... 阅读全文
posted @ 2013-09-09 13:01 逆心 阅读(5343) 评论(1) 推荐(0) 编辑

摘要:一、持久化类中成员标量的要求 作为被NHibernate使用的持久化类,必须满足以下几点要求: 1、声明读写属性 在NHibernate的使用中,持久化类的成员变量必须声明对应的属性,NHibernate支持public、internal、protected三种访问修饰符。 2、提供标识属性 持久化类必须提供一个标识属性,标识属性对应数据库的主键。 当然这个是可选的,并非强制性,但是强烈建议这么做。这个标识属性可以叫任何名字,任何类型。 3、属性必须是非密封的和虚的 持久化类中所有的属性,必须声明为非密封的,也就是不能带有sealed。而且必须带有virtual... 阅读全文
posted @ 2013-09-07 23:56 逆心 阅读(2073) 评论(0) 推荐(2) 编辑

摘要:使用NHibernate最重要的一步就是配置,如果连NHibernate都还没有跑的起来,谈何学习。今天就来详解一下NHibernate的配置。一、NHibernate基本配置 NHibernate配置要注意的有: 1、NHibernate需要一个自定义的配置节点,一般放在Web.confi... 阅读全文
posted @ 2013-09-06 22:19 逆心 阅读(12082) 评论(2) 推荐(3) 编辑

摘要:映射文件,用于告诉NHibernate数据库里的表、列于.Net程序中的类的关系。因此映射文件的配置非常重要。 一、一对一 NHibernate一对一关系的配置方式使用<one-to-one>配置节点。 当我们两个表拥有相同的主键字段,主键值相同的需要关联在一起。比较典型的一个例子是,一个对象的属性 阅读全文
posted @ 2013-09-06 21:22 逆心 阅读(7822) 评论(4) 推荐(3) 编辑

摘要:我之前曾参与维护过一个舆情监控系统,该系统每天源源不断地监控着互联网上的新闻,不断从网上下载新闻保存进入数据库。提出问题 为了表述简单,我特意模拟了一张类似的表: CREATE TABLE NEWS( Id int PK, Title nvarchar(500) --新闻标题 Content text --新闻内容 CreateTime DateTime) 随着时间的推移,数据库里的新闻变得越来越多,系统开始跑得越来越慢。随后,技术经理考虑到,舆情监控需要的仅仅是近期的数据,过时的数据,不太重要。于是,新建了... 阅读全文
posted @ 2013-09-05 23:44 逆心 阅读(1405) 评论(0) 推荐(0) 编辑

摘要:假设有一个要开发一个试题系统,全是不定项选择题。一道题可能有2,3,4...个答案,数据应如何设计呢?本处旨在说明问题所在,例如同类问题还有存储电话,一个人可能有多个号码等等。一、存储多值属性 反模式:创建多个列。 我们知道每列最好只存储一个值,因此先看如下设计: CREATE TABLE Question( QuestionId int PK, QuestionBody nvarchar(500), Answer1 nvarchar(500), Answer2 nvarchar(500), Answer3 nvarchar... 阅读全文
posted @ 2013-09-05 22:40 逆心 阅读(1732) 评论(0) 推荐(0) 编辑

摘要:IBatis.Net之多表查询:一、定制实际对应类的方式 首先配置多表的测试数据库,IBatis.Net之Oracle表连接查询配置: 首先新建两张表如下: 为两张表建立外键:ALTER TABLE Person ADD CONSTRAINT FK_COUNTRY_PERSON FOREIGN KEY(CountryId) REFERENCES Country(Id); 程序中,建立一个PersonCountry.xml 再建立一个对应结果的Model类namespace Ib... 阅读全文
posted @ 2013-09-05 09:51 逆心 阅读(2627) 评论(2) 推荐(0) 编辑

摘要:当页面中引用template.js文件之后,脚本将创建一个TrimPath对象供你使用。parseDOMTemplate(elementId,optionalDocument) //获得模板字符串代码 得到页面中Id为elementId的DOM组件的InnerHTML,将其解析成一个模板,这个返回一个templateObject对象,解析出错时将抛出一个异常。 optionalDocument一个可选参数,在使用iframe,frameset或者默认多文档时会有用,通常用来做模板的DOM元素师一个隐藏的。 以上方法的到的模板(字符串)再经过process()方法进一步解析就得到了最... 阅读全文
posted @ 2013-09-03 17:36 逆心 阅读(6110) 评论(0) 推荐(1) 编辑

摘要:相信有过开发经验的朋友都曾碰到过这样一个需求。假设你正在为一个新闻网站开发一个评论功能,读者可以评论原文甚至相互回复。 这个需求并不简单,相互回复会导致无限多的分支,无限多的祖先-后代关系。这是一种典型的递归关系数据。 对于这个问题,以下给出几个解决方案,各位客观可斟酌后选择。一、邻接表:依... 阅读全文
posted @ 2013-09-03 00:12 逆心 阅读(23469) 评论(15) 推荐(44) 编辑

摘要:Oracle10g创建DataBase实例如下:第一步:Oracle - OraDb10g_home1 -> 配置和移植工具 -> 打开Database Configuration Assistant第二步: 这步就是一路下一步,直到有疑问的地方,截图+说明: 下一步: 下一步: 下一步: 下一步: 这个密码随便输,记住就OK了。 下一步: 在这一步,点口令管理。 解锁掉scott用户,并将密码改为123。 确定退出。OK,一个DataBase就创建完成了。 如果顺利的话,现在你直接打开PL/SQL Developer,输入账号:scott,密码:123就已经能够顺利登录了... 阅读全文
posted @ 2013-09-02 17:48 逆心 阅读(6987) 评论(0) 推荐(0) 编辑

摘要:一、查询select 还记得第一篇示例中的是如何读出数据库里的3条数据吗? 就是调用了一个QueryForList方法,从方法名就知道,查询返回列表。 1、QueryForList 返回List强类型数据集合 来看看方法原型:public IList QueryForList(string statementName, object parameterObject);public IList QueryForList(string statementName, object parameterObject);public void QueryForList(string statem... 阅读全文
posted @ 2013-09-01 22:34 逆心 阅读(2801) 评论(0) 推荐(0) 编辑

摘要:一、SqlMapper类 Ibatis中,加载、分析配置以及映射文件是在创建SqlMapper实例的时候进行的,另外对数据库的操作,也是在SqlMapper实例上调用方法来完成。在IBatis外部的程序中,创建SqlMapper的实例的方式是:ISqlMapper mapper = Mapper.... 阅读全文
posted @ 2013-09-01 15:15 逆心 阅读(3118) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示