随笔分类 - 其它 / 系统架构
摘要:非常抱歉让大家等了这么久,这个系列的第一讲才开始,呵呵,目录写出来后,就是按着目录一个一个的讲出来,与大家一起分享我的开发经验了,呵呵。 今天主要说一下“系统的复用性离不开系统的面向对象性”,我们可能有一种感觉,那就是在开发一个项目时用到了一段代码块,在另一个项目中也用到了,我们通常的作法就是ctrl+C,然后ctrl+V,呵呵,这样做的好处就是省事,不好的地方也是“不省事”,为什么这样说呢? ...
阅读全文
摘要:文章中解决的问题:1 Linq to SQL不支持返回显示实体问题 2 解决了实体中导航属性为集合时类型转换错误的问题 实体的设计: /// <summary>/// Linq原-生ú态类à型í的派é生ú类à,用来′临ù时±保£存结á果集ˉ/// </summary>public class WebManageUsers_Ext : WebManageUsers { }/// <sum...
阅读全文
摘要:回到目录答案是肯定的,一个DBML模型可以对应多个数据库,只要数据库中的表与模型中定义的表结构完成相同,就可以这个技术,我们可以用来开发一些通用的功能模块,如通过后台管理模块,我们将一些通用表进行抽象,如,对用户,角色,部门,菜单等进行抽象,将它的模块建立在我们的公用项目中,然后对这个模型进行操作,在建立DBContext上下文时,我们需要保留一个连接字符串,即,真正的项目中用哪个库,我们这个串就指定哪个库就行了。如图,后台表结构然后,它个模块可以用别对应包含这几个表结构的数据库,呵呵通用后台系统我会在之后的文章中给大家讲到,今天先看一下它的图像,呵呵大家可以看到,对于每一个项目的功能和作用,
阅读全文
摘要:之前我完了《重构,改善即有代码的设计》,这本书非常适合在编程中遇到瓶颈的朋友,看完这本书,一定让您有一种“拨开迷雾”的感觉,事实上这本书就像标题一样,主要是讲代码重构的知识的,从变量命名到语句编写,从语句到提取方法,从方法重构到类重构等等,每一篇文章都像是一道菜,让看过的人回味无穷,在这里班 下Martin Fowler大师。今天有点兴趣,准备按下来的几一写一下最近的作品《架构,改善程序复用性的设计》,主要从系统架构的角度,来设计一个可能被多个系统重用的公用项目集,下面是本课程的目录部分:第一讲 系统的复用性离不开系统的面向对象性第二讲 什么应该提取出来,什么应该保留第三讲 实现一种功能的代码
阅读全文
摘要:将系统中全局的,容易发生变化的数据,但调用频繁的常量信息存储在文件中是个不错的选择,原因有以下几点: 1 由于操作频繁,放在文件里可以减低数据库的负载 2 由于信息是全局的,所以放在文件中,对于所有层都可以开放 3 由于它容易发生变化 ,所以写死在代码中,不是一个聪明的作法,放在文件中可以不用编译,就可以使信息同步到程序上 4 操作频繁,放在文件中,这事实上对于服务器的CPU来说不是一件好事,所...
阅读全文
摘要:在我上一篇文章中,对实体验证的方式是如果所有字段不满足条件将会向集合中迭代返回一个结果,但有时,我们不希望验证所有对象,可以只是修改指定字段,如用户修改密码功能,可以对实体验证只考虑原密码,新密码和确认密码就可以了,而如果验证所有字段反而有点多此一举了,所以,我对实体类的验证部分进行了一个改动看代码 /// /// 如果验证的字段为NULL表示验证所有字段 /// public string[] ValidFields { get; set; } public virtual bool IsValid { get { return t...
阅读全文
摘要:说起数据验证,在我的博客中文章不少,有MVC标准验证,有自己架构中用到的验证,但一个共同的问题就是重复的代码量太大,而且破坏了数据库实体本身的层次感!即数据(实体)有效性验证就应该在实体层去实现,不应该推迟到WEB层去做这事,在之前的文章中我介绍了使用统一实体基类来做这事,但需要每个实体都去干预自己...
阅读全文
摘要:以用户注册为例,来说一下MVC中向数据表中添加数据的方法 从WEB层说起:有两个action,分别实现显示注册界面和提交注册请求的作用,在action中,对表单实体进行了数据有效性的验证,代码如下: public ActionResult Register() { return View(); } [HttpPost] pub...
阅读全文
摘要:.net原生态的ORM工具就是VS.net自带的工具,主要有entity frameworks和linq to sql,前者支持database first,model first和code first,这三种生产模块主要说明如下: database first:数据库优先,即先设计数据库,再生成实体对象 model first:模型优先,先设计实体模型,再自动生成数据库 code firs...
阅读全文
摘要:一 DBContext的构造方法,方法的重载二 DBContext实例中,表实体对象是怎么被加入的三 分部类是否破坏了单一职责四 分部方法从另一方面定义了类型的操作规范五 LINQ实体类中对属性的赋值,变化前与变化后SendPropertyChanging与SendPropertyChanged六 LINQTOSQL中为我们触发了SendPropertyChanging和SendPropertyChanged,它的真正用意是什么七 为DBContext对象应该作为其它实体操作类型的基类,并为它提供统一的提交动作这是DBML系列的最后一讲,主要内容是将DBML文件进行抽象,把DBML里所有实体类
阅读全文
摘要:一 DBContext的构造方法,方法的重载二 DBContext实例中,表实体对象是怎么被加入的三 分部类是否破坏了单一职责四 分部方法从另一方面定义了类型的操作规范五 LINQ实体类中对属性的赋值,变化前与变化后SendPropertyChanging与SendPropertyChanged六 LINQTOSQL中为我们触发了SendPropertyChanging和SendPropertyChanged,它的真正用意是什么七 为DBContext对象应该作为其它实体操作类型的基类,并为它提供统一的提交动作接上一篇文章,谈到了当属性被修改时,LINQ会帮助我们触发两个事件,它们是:publ
阅读全文
摘要:回到目录首先从这一篇的文章标题中可以看出,主要是讲dbml中对实体的属性赋值的相关知识,还有SendPropertyChanging与SendPropertyChanged这两个方法,从第五讲和第六讲中我们看到标题有些雷同,是的,但我讲它们的侧重点不同,第五讲主要讲实体中属性赋值的过程,此时会用到SendPropertyChanging与SendPropertyChanged这两个方法,而第六讲,主要是讲这两个方法的作用,先透露一下,主要讲事件触发机制的,呵呵。 1 public string ExceptionID 2 { 3 get 4 ...
阅读全文
摘要:一 DBContext的构造方法,方法的重载二 DBContext实例中,表实体对象是怎么被加入的三 分部类是否破坏了单一职责四 分部方法从另一方面定义了类型的操作规范五 LINQ实体类中对属性的赋值,变化前与变化后SendPropertyChanging与SendPropertyChanged六 LINQTOSQL中为我们触发了SendPropertyChanging和SendPropertyChanged,它的真正用意是什么七 为DBContext对象应该作为其它实体操作类型的基类,并为它提供统一的提交动作分部方法,partial method,它要求必须定义在分部类里,上一文章已经说过分
阅读全文
摘要:一 DBContext的构造方法,方法的重载二 DBContext实例中,表实体对象是怎么被加入的三 分部类是否破坏了单一职责四 分部方法从另一方面定义了类型的操作规范五 LINQ实体类中对属性的赋值,变化前与变化后SendPropertyChanging与SendPropertyChanged六 LINQTOSQL中为我们触发了SendPropertyChanging和SendPropertyChanged,它的真正用意是什么七 为DBContext对象应该作为其它实体操作类型的基类,并为它提供统一的提交动作先来看一下“百度百科”对单一职责的定义: 一个类,只有一个引起它变化的原因。应该只有
阅读全文
摘要:一 DBContext的构造方法,方法的重载二 DBContext实例中,表实体对象是怎么被加入的三 分部类是否破坏了单一职责四 分部方法从另一方面定义了类型的操作规范五 LINQ实体类中对属性的赋值,变化前与变化后SendPropertyChanging与SendPropertyChanged六 LINQTOSQL中为我们触发了SendPropertyChanging和SendPropertyChanged,它的真正用意是什么七 为DBContext对象应该作为其它实体操作类型的基类,并为它提供统一的提交动作这个系列的主角将一直是linqtosql.dbml,我们一般叫它数据对象关系映射,或
阅读全文
摘要:一 DBContext的构造方法,方法的重载二 DBContext实例中,表实体对象是怎么被加入的三 分部类是否破坏了单一职责四 分部方法从另一方面定义了类型的操作规范五 LINQ实体类中对属性的赋值,变化前与变化后SendPropertyChanging与SendPropertyChanged六 LINQTOSQL中为我们触发了SendPropertyChanging和SendPropertyChanged,它的真正用意是什么七 为DBContext对象应该作为其它实体操作类型的基类,并为它提供统一的提交动作当我们建立一个linq to sql的DBML文件后,我们可以打开它的代码文件,看一
阅读全文
摘要:一 DBContext的构造方法,方法的重载二 DBContext实例中,表实体对象是怎么被加入的三 分部类是否破坏了单一职责四 分部方法从另一方面定义了类型的操作规范五 LINQ实体类中对属性的赋值,变化前与变化后SendPropertyChanging与SendPropertyChanged六 LINQTOSQL中为我们触发了SendPropertyChanging和SendPropertyChanged,它的真正用意是什么七 为DBContext对象应该作为其它实体操作类型的基类,并为它提供统一的提交动作喜欢微软的东西,是因为它的东西没有告诉你“事情就是这样”,而告诉你的是“你认为事件应
阅读全文
摘要:这段时间确实忙,以至于连写博客的时间都没有了,今天正好有点时间,有第五章依赖住入简单的说一下,主要分两块,一是依赖住入的概念,什么时候使用依赖注入,第二个问题是通过一个使用Unity的实例来让大家对依赖注入有一个很直观的认识。一 概念:依赖注入,即Dependency Injection,即DI,有时也叫它控制反转,一般用IoC来实现对象的创建工作,我们知道一个类,要想被实例化我们可以用new关键字,例如一个数据操作接口规范interface IRepository{},其中有一个SQLSERVER的数据操作去实现了它class SQLRepository:IRepository{},而客户电
阅读全文
摘要:为什么要架构,我来说说原因 当你希望把复杂问题清晰化时,而不是简单化,这时需要架构 当你希望把代码的重复利用率提高时,需要架构 当你希望对团队整个进行把控时,需要架构 以上只是我简单的总结,下面说说架构之“走火入魔”篇 我很喜欢看武侠电影,喜欢邵氏,邵氏经典,必属佳片说的一点不错,在我看大部分武侠剧时,很多情节都是大反派练某种神功,走火入魔的情景,他们为何会走火入魔呢?在我看来是他们对自...
阅读全文
摘要:有几天没写这方面的文章了,坦白说,没灵感,今天晚上,还是要写点东西,准备说一下抽象类在架构设计中的层次感,其实一说到抽象类,大家第一个就会想到基类,由通用属性和通用方法组成的类,可能定义一些规范,而自身又可以实现一些统一功能的类,这都是抽象类的表现,我不想把书本上的话拿出来说,也不想把某校培训学校名师的话拿来说,我只想从我的代码中说问题,因为大家真正想听的,想看的是这些“术语“在代码中的应用,不是...
阅读全文