从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~四 分部方法从另一方面定义了类型的操作规范
2012-03-27 17:27
621 查看
一 DBContext的构造方法,方法的重载
二 DBContext实例中,表实体对象是怎么被加入的
三 分部类是否破坏了单一职责
四 分部方法从另一方面定义了类型的操作规范
五 LINQ实体类中对属性的赋值,变化前与变化后SendPropertyChanging与SendPropertyChanged
六 LINQTOSQL中为我们触发了SendPropertyChanging和SendPropertyChanged,它的真正用意是什么
七 为DBContext对象应该作为其它实体操作类型的基类,并为它提供统一的提交动作
分部方法,partial method,它要求必须定义在分部类里,上一文章已经说过分部类,相信各位已经以它有了一个认识了,今天主要说分部方法,分部方法主要是为了以后有可能要实现某个功能,而为这个功能定义的方法,这在linq to sql的DBML文件中表现的很突出,看代码:
分部方法从另一方面定义了类型的操作规范,这句话是今天的主题,从上面的代码中可以看到,事实也是这样,分部方法标注了类可以包括的行为,并把这些行为进行调用,而行为主体可以由开发者自己去确定,怎么样,很灵活吧!
二 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文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~七 为DBContext对象应该作为其它实体操作类型的基类,并为它提供统一的提交动作
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~七 为DBContext对象应该作为其它实体操作类型的基类,并为它提供统一的提交动作
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~一 DBContext的构造方法,方法的重载
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~目录
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~五 LINQ实体类中对属性的赋值,变化前与变化后SendPropertyChanging与SendPropertyChanged
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~目录
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~六 LINQTOSQL中为我们触发了SendPropertyChanging和SendPropertyChanged,它的真正用意是什么
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~二 DBContext实例中,表实体对象是怎么被加入的
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~三 分部类是否破坏了单一职责
- 服务器 告诉客户端,我要发给你的文件 是什么文件(类型 和后缀)
- python基础(文件输入/输出 内建类型 字典操作使用方法)
- int(long)类型长度由啥决定(好)|__int64是微软virtual C++编译器定义的基本数据类型非C++标准规范(协会)里定义的一种基本数据类型
- 文件操作之增删改查3---文件的修改,f.replace(),在linux里的一些应用sed,with语句方法来打开一个或多个文件避免忘记关闭,python一行写的太长,怎么编写多行的规范
- python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
- 关于虚拟机复制文件时:无法确定本地文件类型。您可能没有执行此操作的权限。 正在取消文件复制操作。的决解方法
- 16、2015.08.03第十七节课 C#1(.net和C#的关系、VS与.net的对应关系、VS2012常用的几种应用程序、C#定义一个类的方法、类页面内容的解释、定义Person的类、调用Person类的方法、命名规范、数值类型)
- python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
- IT风云录(开篇词):我们从David Cutler学到什么?
- WCF Data Service 的.NET Client 的不支持原生类型服务操作的解决方法
- 查看电脑用的是什么宽带类型的方法