从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~二 DBContext实例中,表实体对象是怎么被加入的
2012-03-26 23:26
711 查看
这个系列的主角将一直是linqtosql.dbml,我们一般叫它数据对象关系映射,或者称为ORM,简单说就是数据库与对象之间作一个关系,这种关系我们称为Mapping,在LinqToSQL中,我们直接将某个数据库对象托到DBML文件中,这种关系映射就形成了,也就是说,以后想操作数据库直接操作DBML中的实体类型就可以了。
我们在使用某种ORM工具时,总有一个习惯,那就是将需要抽象的东西进行抽象,因为在管理起来比较方便,结构上也更符合面向对象,对面LinqToSQL的实体类,我们是否应该把它进行一个抽象?其实,微软在设计LinqToSQL实体类时已经把答案告诉了我们,那就是“要,必须要”,从实体类型用partial修饰符就可以看出,微软很希望我们把它重新进行一行抽象,将自己项目需要的东西加入到实体类中,在项目中,代码可能是这样:
///<summary> ///用户实体 4///</summary> publicpartialclassUserBases:EntityBase { ///<summary> ///统一主键 ///</summary> protectedoverrideobject[]PrimaryKey { get{returnnewobject[]{this.UserID};} } ///<summary> ///字段变化 ///</summary> publicoverridevoidOnPropertyChange() { if(this.IsValid)//实体是否验证通过 { base.OnLoaded(); this.PropertyChanged+=newPropertyChangedEventHandler(base.PropertyChangedEvent); } } }
在UserBases实体中由于它继承了EntityBase这个统一的实体抽象类,所以,在DATA层作统一实体GURD操作时,方法参数和返回值可以写成这样:
protectedvirtualIQueryable<EntityBase>GetEntities<TEntity>(Expression<Func<TEntity,bool>>queryFunc)whereTEntity:EntityBase { }
对于实体的抽象,不仅是LinqToSQL,对于其实的架构也同样适用。
相关文章推荐
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~七 为DBContext对象应该作为其它实体操作类型的基类,并为它提供统一的提交动作
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~七 为DBContext对象应该作为其它实体操作类型的基类,并为它提供统一的提交动作
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~五 LINQ实体类中对属性的赋值,变化前与变化后SendPropertyChanging与SendPropertyChanged
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~一 DBContext的构造方法,方法的重载
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~六 LINQTOSQL中为我们触发了SendPropertyChanging和SendPropertyChanged,它的真正用意是什么
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~四 分部方法从另一方面定义了类型的操作规范
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~目录
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~目录
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~三 分部类是否破坏了单一职责
- Linux 在Bash脚本中怎么关闭文件描述符的实例
- 项目管理系列分享(五)——我们能从中国现代音乐的发展学到什么?
- 从谷歌的招聘中,我们学到了什么?
- 零基础学python-2.22 回到我们的游戏 加入文件和异常
- 利用XStream实现实体对象和xml文件相互转换
- java 怎么向Excel中加入超链接,指向相对路径的文件
- 从程序员到项目经理(23):你真的尽力了吗?--从“月饼税”中我们学到什么
- 18.python面对对象编程(一)—什么是面向对象,类和实例,访问限制
- flash加载脚本文件导致IE脚本错误 ,行53 ,字符3,缺少对象,代码0 , 怎么解决?
- 关于一个实体对象不能由多个 IEntityChangeTracker 实例引用。
- 09_通过读取配置文件的方式来使用反射完成对实例对象方法调用