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