从微软的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表示对真实数据表的抽象,可以根据实体对象得到真实数据表对象
 
核心代码:
统一抽象基类:
 
具体实体对象,需要人为干预一下:
 
运行过程:当实体为加载后,自动订阅一个PropertyChanged,指向的方法是基类的PropertyChangedEvent,它主要功能是记录要修改的字段和被
修改的值,然后UI层去为新的实体对象赋值,提交到BLL(Service)或者DAL(DATA)(小项目可以不用BLL),去调用底层的统一修改的方法,即可。
 
本项目与其它项目不同的地方在于:把通过项目与实例项目分开
 
以后,直接引用 Entity.Commons项目就可以了,对于不同的项目有不同的Entity,这里Entity就叫实例项目,而如果你要作的项目只有一个数据库,可能是前台后台子模块项目等,那Entity层也可以是公用的,DATA层公用,只要重新设计Service层和UI层就可以了。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值