写点什么

Entity Framework 6 中的抽象接口和抽象基类

  • 2013-06-20
  • 本文字数:723 字

    阅读完需:约 2 分钟

作为 Beta 1 版本的一部分,Entity Framework 6 为 DbSet 添加了新的 AddRange 和 RemoveRange 方法,来支持批量插入和删除。这两个方法都接受一个 IEnumerable 类型的参数,并在调用 SaveChanges 的时候对其进行处理。同时 DbSet 还增加了一个 FindAsync 方法。

添加这些方法给 Entity Framework 小组带来了设计问题。为了使 DbSet 可测试,他们引入了之匹配的接口 IDbSet。理论上任何模拟类都会实现该接口。但为抽象接口添加新方法属于重大(破坏性的)修改,你会怎么做呢?

Entity Framework 小组考虑过的一些想法包括:

  • 做出这种重大修改。Sun 在 Java 7 中为 JDBC 接口添加新方法时也走的这个路子。
  • 使 DbSet“可模拟”。也就是说为其添加一个受保护的构造函数,并将所有方法标记为 virtual。如果使用了这个受保护的构造函数,则所有方法都被视为无操作无用途的覆盖。IDbSet 可以标记为废弃的,因为它对于真正的 DbSet 来说已经没什么用了。
  • 使用带委托的扩展方法。对于真正的 DbSet,扩展方法将调用 DbSet 的方法。如果仅仅是 IDbSet,将使用反射来找到匹配的方法进而调用。毫无疑问,这会使测试变慢,并且丢失了静态类型的安全性。
  • 创建新的接口 IDbSet2。(以后可能还会有 IDbSet3、IDbSet4 等)。

EF 小组的选择记录在 5 月 16 日的设计会议纪要中,

我们决定让 DbSet 可模拟。不过我们不会将 IDbSet 标记为废弃,以为目前使用 IDbSet 而不需要新成员的人减少创建工作。我们将为 IDbSet 添加文档,指明新代码最好使用 DbSet,并根据反馈决定是否在未来弃用 IDbSet。

如果你对 Entity Framework 以往的设计决策感兴趣,可以查看 2012 年 3 月 31 日以来的所有设计会议纪要

查看英文原文 Abstract Interfaces vs Abstract Base Classes in Entity Framework 6

2013-06-20 09:293410
用户头像

发布了 59 篇内容, 共 26.6 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

“分离”“聚合”两手抓,天翼云聚合计算赋能多元化应用场景!

天翼云开发者社区

云计算 天翼云

开个技术外挂|用技术轻松实现GPU显卡冷却风扇噪声控制

Altair RapidMiner

gpu 仿真 显卡 GPU实例 altair

基于Java+SpringBoot+Vue前后端分离宠物商城网站设计和实现

hunter_coder

后端开发

某能源自保公司:携手嘉为蓝鲸WeOps,共赴运维转型升级之路!

嘉为蓝鲸

数字化转型 可观测 自动化运维

Tele-FLM系列再升级!52B对话模型发布、全球首个万亿单体稠密模型开源

智源研究院

亚信安慧正式加入多样性算力产业及标准推进委员会

亚信AntDB数据库

DataCanvas Alaya九章元识大模型通过北京市生成式人工智能服务备案

九章云极DataCanvas

MCtalk·CEO对话×酷家乐:从智能涌现到应用涌现,AI在B端做了哪些事?

ToB行业头条

【YashanDB知识库】YashanDB的JDBC/OCI驱动如何设置字符编码

YashanDB

yashandb 崖山数据库 崖山DB

促进云边协同发展,我们一直在努力!

天翼云开发者社区

云计算 算力

华为云Serverless可观测性解决方案打造高效、可靠的云原生应用

Serverless 华为云

如何搭建设备巡检二维码?看看这篇教程

草料二维码

中国人民大学商学院校友IT互联网+俱乐部会长董哲一行到访亚信科技,共探企业创新之路

亚信AntDB数据库

亚信安慧AntDB亮相PostgreSQL中国技术大会,获“数据库最佳应用奖”并分享数据库应用实践

亚信AntDB数据库

全面解析淘宝商品详情API的SKU信息

技术冰糖葫芦

API Explorer API 编排 api 货币化 API 文档 pinduoduo API

基于Java+SpringBoot+Vue前后端分离车辆管理系统设计和实现

hunter_coder

后端开发

告别手动做PPT!这5款AI一键生成PPT软件,你都知道吗?

彭宏豪95

人工智能 效率工具 PPT AIGC AI生成PPT

面试官:聊聊你对分库分表的理解?

王磊

Java

“夺金”2024中国互联网大会!天翼云斩获三项大奖!

天翼云开发者社区

云计算 互联网大会

KaiwuDB CTO 魏可伟:差异化创新,面向行业的多模架构

KaiwuDB

多模数据库 KaiwuDB 新版本发布

盘点那些国际知名的黑客(下)

网络安全服务

技术 黑客 计算机 黑客攻击 女性

最佳产品奖,TeleDB拿下!

天翼云开发者社区

数据库 云计算

如何根据淘宝买家秀API返回值优化商品详情页

技术冰糖葫芦

API Explorer api 货币化 API 文档

基于Java+SpringBoot+Vue前后端分离常规应急物资管理系统设计和实现

hunter_coder

后端开发

基于Java+SpringBoot+Vue前后端分离餐厅管理系统设计和实现

hunter_coder

后端开发

快手可灵视频生成大模型全方位测评

快手技术

音视频技术 #大模型

赋能未来教育,3DCAT实时云渲染助力深圳鹏程技师学院打造5G+XR实训室

3DCAT实时渲染

实时云渲染 虚拟仿真云教学 虚拟仿真实训教学

基于Java+SpringBoot+Vue前后端分离成绩管理系统设计和实现

hunter_coder

后端开发

Entity Framework 6中的抽象接口和抽象基类_架构_Jonathan Allen_InfoQ精选文章