一 DBContext的构造方法,方法的重载

二 DBContext实例中,表实体对象是怎么被加入的

三 分部类是否破坏了单一职责

四 分部方法从另一方面定义了类型的操作规范

五 LINQ实体类中对属性的赋值,变化前与变化后SendPropertyChanging与SendPropertyChanged

六 LINQTOSQL中为我们触发了SendPropertyChanging和SendPropertyChanged,它的真正用意是什么

七 为DBContext对象应该作为其它实体操作类型的基类,并为它提供统一的提交动作

这个系列的主角将一直是linqtosql.dbml,我们一般叫它数据对象关系映射,或者称为ORM,简单说就是数据库与对象之间作一个关系,这种关系我们称为Mapping,在LinqToSQL中,我们直接将某个数据库对象托到DBML文件中,这种关系映射就形成了,也就是说,以后想操作数据库直接操作DBML中的实体类型就可以了。

我们在使用某种ORM工具时,总有一个习惯,那就是将需要抽象的东西进行抽象,因为在管理起来比较方便,结构上也更符合面向对象,对面LinqToSQL的实体类,我们是否应该把它进行一个抽象?其实,微软在设计LinqToSQL实体类时已经把答案告诉了我们,那就是“要,必须要”,从实体类型用partial修饰符就可以看出,微软很希望我们把它重新进行一行抽象,将自己项目需要的东西加入到实体类中,在项目中,代码可能是这样:

 1    /// <summary>
 2    /// 用户实体

 4   /// </summary>
 5    public partial class UserBases : EntityBase
 6    {
 7        /// <summary>
 8        /// 统一主键
 9        /// </summary>
10        protected override object[] PrimaryKey
11        {
12            get { return new object[] { this.UserID }; }
13        }
14
15        /// <summary>
16        /// 字段变化
17        /// </summary>
18        public override void OnPropertyChange()
19        {
20            if (this.IsValid)//实体是否验证通过
21
22 {
23                base.OnLoaded();
24                this.PropertyChanged += new PropertyChangedEventHandler(base.PropertyChangedEvent);
25            }
26        }
27     }

在UserBases实体中由于它继承了EntityBase这个统一的实体抽象类,所以,在DATA层作统一实体GURD操作时,方法参数和返回值可以写成这样:
1 protected virtual IQueryable<EntityBase> GetEntities<TEntity>(Expression<Func<TEntity, bool>> queryFunc) where TEntity : EntityBase
2 {
3 }

 
对于实体的抽象,不仅是LinqToSQL,对于其实的架构也同样适用。
 

从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~二 DBContext实例中,表实体对象是怎么被加入的...相关推荐

  1. 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~三 分部类是否破坏了单一职责...

    一 DBContext的构造方法,方法的重载 二 DBContext实例中,表实体对象是怎么被加入的 三 分部类是否破坏了单一职责 四 分部方法从另一方面定义了类型的操作规范 五 LINQ实体类中对属 ...

  2. 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~四 分部方法从另一方面定义了类型的操作规范...

    一 DBContext的构造方法,方法的重载 二 DBContext实例中,表实体对象是怎么被加入的 三 分部类是否破坏了单一职责 四 分部方法从另一方面定义了类型的操作规范 五 LINQ实体类中对属 ...

  3. ML之MLiR:利用多元线性回归法,从大量数据(csv文件)中提取五个因变量(输入运输任务总里程数、运输次数、三种不同的车型,预测需要花费的小时数)来预测一个自变量

    ML之MLiR:利用多元线性回归法,从大量数据(csv文件)中提取五个因变量(输入运输任务总里程数.运输次数.三种不同的车型,预测需要花费的小时数)来预测一个自变量 输出结果 代码设计 from nu ...

  4. 从three.js的字体文件中提取部分字符

    three.js的中文字体文件很大,以微软雅黑为例,有26M. 如果程序中只用到了部分汉字,那么可以瘦身一下,只保留自己需要的汉字. three.js的字体文件格式是这样的: module.expor ...

  5. linux字符串排序文件,Linux awk+uniq+sort 统计文件中某字符串出现次数并排序

    https://blog.csdn.net/qq_28766327/article/details/78069989 在服务器开发中,我们经常会写入大量的日志文件.有时候我们需要对这些日志文件进行统计 ...

  6. 分部类和方法的学习以及在LINQ中的应用(原创)

    可以将 类或 结构. 接口或方法的定义拆分到两个或多个源文件中. 每个源文件包含类型或方法定义的一部分,编译应用程序时将把所有部分组合起来. 分部类 在以下几种情况下需要拆分类定义: 处理大型项目时, ...

  7. PHP将excel文件中的数据批量导入到数据库中

    2019独角兽企业重金招聘Python工程师标准>>> 这几天在做项目时,遇到了需要批量导入数据的情况,用户将excel表格提交后,需要我们后台这边将excel表格信息中的内容全部插 ...

  8. DLINQ *.dbml文件该属于哪一层

    今天尝试用.Net3.5架构网站,发现一个问题,使用LINQ操作数据库,LINQ操作属哪层呢? 假如光使用一种数据库,那么把LINQ放在数据层是没有问题,然后再对LINQ数据进行包装,就可以使用了.但 ...

  9. Dbml文件提取建表TSql-CodeSmith

    在昨天一个大学师弟,他问我能不能将LinqToSql文件转化为创建表的TSql语句,他是刚开始学习.NET,所以在网上下些示例看,但苦于没有数据库.所以就有了这一篇博客,作为我的Code生成技术的Co ...

最新文章

  1. Asp.Net异常:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值的解决方法...
  2. 忘记手机绑定过的UC/交易猫账号怎么找回
  3. easyexcel和poi对比_POI 和 EasyExcel
  4. scala使用java类_使用Java和Scala将Play Framework 2应用程序部署到Openshift
  5. C/C++二维数组分配内存
  6. 现在流行的大前端是什么,自己需要了解哪里内容?
  7. 连载:面向对象葵花宝典:思想、技巧与实践(34) - DIP原则
  8. PowerShell_零基础自学课程_9_高级主题:静态类和类的操作
  9. 14个开源Ajax框架
  10. 基于Java毕业设计新纪元大酒店管理系统源码+系统+mysql+lw文档+部署软件
  11. 与大家分享学钢琴会出现的一些问题及解决方法
  12. “ORA-00932: 数据类型不一致: 应为 -, 但却获得 CLOB “一种情况的解决
  13. 《东周列国志》第六十五回 弑齐光崔庆专权 纳卫衎宁喜擅政
  14. CESM优化——Intel编译器安装OpenMPI4.0
  15. 彩色花砖机技术参数列表厂家分享
  16. 开学季征文 | 百尺竿头,我们都要更进一步
  17. python应聘项目经历怎么写_简历中怎么写「项目经历」最好?为什么?
  18. 给大家推荐一个比较好的VC论坛【VC驿站】
  19. python主要是干什么用的,python到底是干什么的
  20. NODEMCU 固件编译

热门文章

  1. 力扣452 用最少的箭引爆气球(个人感悟向,非完整代码)
  2. 30分钟轻松入门Spring MVC
  3. 增量更新同步_干货 | Debezium实现Mysql到Elasticsearch高效实时同步
  4. 数据结构与算法(二):比较有名的排序和所有算法
  5. 【uoj#174】新年的破栈 贪心
  6. VisualSVN Server 修改用户密码
  7. Div+CSS布局居中
  8. 测试你的杀毒软件实时监控能力!
  9. 组件、局部的组件、表行组件、组件数据传递
  10. Zookeeper单机安装(开启kerberos)