从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~四 分部方法从另一方面定义了类型的操作规范
五 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);//初始实体时,先订阅列修改的事件
} }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示