从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~六 LINQTOSQL中为我们触发了SendPropertyChanging和SendPropertyChanged,它的真正用意是什么

简介:

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

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

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

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

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

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

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

接上一篇文章,谈到了当属性被修改时,LINQ会帮助我们触发两个事件,它们是:

public event PropertyChangingEventHandler PropertyChanging;

   public event PropertyChangedEventHandler PropertyChanged;
那它在实际的项目中是怎么去用的呢,下面我用最近我写的一个项目来说一下它的用途:
实现功能:统一的更新,不使用linq to sql的更新,而使用T-SQL的update
实现思路:需要将要更新的字段和值进行整理,然后再找到要更新的实体真实表名,表主键
核心知识:PropertyChanging和PropertyChanged事件帮助我们收集要更新的字段
专业知识:MetaTable表示对真实数据表的抽象,可以根据实体对象得到真实数据表对象
 
核心代码:
统一抽象基类:
image 
具体实体对象,需要人为干预一下:
image 
运行过程:当实体为加载后,自动订阅一个PropertyChanged,指向的方法是基类的PropertyChangedEvent,它主要功能是记录要修改的字段和被
修改的值,然后UI层去为新的实体对象赋值,提交到BLL(Service)或者DAL(DATA)(小项目可以不用BLL),去调用底层的统一修改的方法,即可。
 
本项目与其它项目不同的地方在于:把通过项目与实例项目分开
image 

以后,直接引用 Entity.Commons项目就可以了,对于不同的项目有不同的Entity,这里Entity就叫实例项目,而如果你要作的项目只有一个数据库,可能是前台后台子模块项目等,那Entity层也可以是公用的,DATA层公用,只要重新设计Service层和UI层就可以了。

本文转自博客园张占岭(仓储大叔)的博客,原文链接:从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~六 LINQTOSQL中为我们触发了SendPropertyChanging和SendPropertyChanged,它的真正用意是什么,如需转载请自行联系原博主。

目录
相关文章
|
开发者
微软更新 Microsoft Store 策略:重点“打击”欺诈付费版的非官方开源程序
微软更新 Microsoft Store 策略:重点“打击”欺诈付费版的非官方开源程序
142 0
微软更新 Microsoft Store 策略:重点“打击”欺诈付费版的非官方开源程序
|
JavaScript
工作中一些比较奇怪的产品需求笔记
1.要求登录以后点击浏览器返回以后再点返回需要重新登录;这个本来是浏览器默认的一些缓存,当时也是在网上各种百度   解决问题思路 :当时经过反复的测试,发现每次浏览器返回之后会重新加载一次页面js;但是不会给服务器发请求;也就是从后台没办法控制‘      然后给windos设置了一个全局变量;每次...
1121 0
|
机器学习/深度学习 人工智能 大数据