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

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

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

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

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

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

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

分部方法,partial method,它要求必须定义在分部类里,上一文章已经说过分部类,相信各位已经以它有了一个认识了,今天主要说分部方法,分部方法主要是为了以后有可能要实现某个功能,而为这个功能定义的方法,这在linq to sql的DBML文件中表现的很突出,看代码:

public partial class Category : INotifyPropertyChanging, INotifyPropertyChanged{private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);private int _ID;private string _Name;private int _ParentID;#region 可扩展性方法定义
        partial void OnLoaded();partial void OnValidate(System.Data.Linq.ChangeAction action);partial void OnCreated();partial void OnIDChanging(int value);partial void OnIDChanged();partial void OnNameChanging(string value);partial void OnNameChanged();partial void OnParentIDChanging(int value);partial void OnParentIDChanged();#endregion
    public Category(){OnCreated();}
}
我们看到微软为一个linq实体添加自动添加了几个分部方法,但并没有去实现它,在我们开始程序时,可以在它进行实现,但会引用一些方法,如OnCreated方法,而我们在Category 分部类
中可以为OnCreated方法进行实现,从而达到当建立实体实例时,执行我们的代码。

分部方法从另一方面定义了类型的操作规范,这句话是今天的主题,从上面的代码中可以看到,事实也是这样,分部方法标注了类可以包括的行为,并把这些行为进行调用,而行为主体可以由开发者自己去确定,怎么样,很灵活吧!

看一下在我的项目中是如何使用分部方法的,它实现了每次实例化对象时,自动执行方法体里的代码的功能,本代码段的功能是为实体订阅一个列修改的事件。
public class UserBases_Ext : UserBases { }public partial class UserBases : EntityBase{protected override object[] PrimaryKey{get { return new object[] { this.UserID }; }}/// <summary>/// 实体初始化时自动执行,在linqtosql的源文件里有定义
/// </summary>partial void OnLoaded(){if (this.IsValid)//实体是否验证通过            {base.Initialization();//基类的某些属性初始化
this.PropertyChanged += new PropertyChangedEventHandler(base.PropertyChangedEvent);//初始实体时,先订阅列修改的事件

}

本文转自博客园张占岭(仓储大叔)的博客,原文链接:从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~四 分部方法从另一方面定义了类型的操作规范,如需转载请自行联系原博主。

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

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

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

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

    一 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. 看漫画学python 豆瓣_漫画,小莉要学Python后端,看大牛是怎么教她的!
  2. 独家 | 2种数据科学编程中的思维模式,了解一下(附代码)
  3. 全球缺芯+瑞萨火灾——网络营销之下一众车企减产的减产,停产的停产
  4. 印度18岁天才少年,造出“全球最小卫星”,实力不容小觑!
  5. 手把手教你做产品经理1.0
  6. 【缅怀妈妈系列诗歌】之八:妈妈,我不会忘记
  7. 二叉树的所有路径(LeetCode 257)
  8. 二元函数可导与可微的关系_视频教学:期末试卷解析之多元函数基本概念及相互关系讨论...
  9. 远程连接linux主机_Linux远程桌面连接Windows
  10. 互联网最强的下载工具:IDM
  11. DOSBOX怎么使用 从编译到连接到执行操作全过程 + debug
  12. 数字经济进入2.0时代 浙里有为共赢新“基”遇
  13. svn提示没有设置冲突_SVN冲突解决方法大全
  14. 服务器用户名 administrator 修改,windows2003中Administrator用户名与密码修改图解Windows服务器操作系统 -电脑资料...
  15. 几个设计原则的优先级排序
  16. 【mysql】mysql查询结果添加固定值
  17. 《视觉SLAM十四讲》学习笔记:第5讲相机与图像
  18. 7PTA7-6 结伴同行去秋游
  19. Lnux-组-用户管理
  20. 爱奇艺qsv格式视频无损转换为MP4

热门文章

  1. CCF NOI1144 众数
  2. SpringCloud-Learning
  3. python scoket、SocketServer简单实现文件上传下载
  4. Linux 下安装与卸载JDK
  5. 创建VLAN的两种方法
  6. JS 判断URL中是否含有 http:// 如果没有则自动为URL加上
  7. Go语言 ProtoBuf 序列化和反序列化
  8. OO Unit 3 JML
  9. HashMap源码学习
  10. Linux(4)系统管理