AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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:293212
用户头像

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

关注

评论

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

低代码是什么?2025技术详解:平台分类、用户群体与发展趋势

优秀

低代码 低代码开发 低代码平台

传统企业如何玩转平台工程?2 个运维靠它管 50 + 应用

北京好雨科技有限公司

云原生 k8s rainbond 企业号 5 月 PK 榜

开源鸿蒙开发者大会2025成功召开,启动开源鸿蒙应用技术组件共建

极客天地

安全,稳定可靠的政企即时通讯数字化平台

BeeWorks

即时通讯 IM 企业级应用

HarmonyOS实战:腾讯IM之聊天列表搭建(一)

IT小码哥

鸿蒙 HarmonyOS NEXT harmoyos 腾讯IM

ETL怎么实现多流自定义合并?

RestCloud

Java join ETL 数据集成工具 多流合并

4月报 | 将已派遣任务按工人组划分到不同等待队列提案落地

白鲸开源

大数据 开源 Apache DolphinScheduler 任务编排 工作流任务调度

重磅!SpringBoot4发布,11项重大变更全解析!

王磊

MetaMask钱包已集成Solana 网络,以太坊用户也能参与DePIN生态

PowerVerse

以太坊 节点 钱包 Solana DePIN

掘金社区 MCP 上线、Claude 4与Gemini 2.5正面交锋、AI编程助手能力再进化—掘金 AI 编程社区周刊

Captain

优哩哩的推广模式是什么?

web3区块链创业团队DappNetWork

火热邀测!DataWorks数据集成支持大模型AI处理

阿里云大数据AI技术

人工智能 数据分析 数据处理 #大数据 Dataworks

大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece

武子康

大数据 hadoop mapreduce hive

什么是新一代智能职业发展平台?jobleap.cn领导的新一代求职平台与传统App有何不同?

安全乐谷

求职 找工作 秋招 春招

浅谈国企数字化转型

优秀

数字化转型 国企数字化转型

「高盛」最新人形机器人研报:人形机器人商业化瓶颈和主流公司梳理(附报告)

机器人头条

机器人 大模型 人形机器人 具身智能

MySQL性能优化策略及高可用架构设计与实践+监控与运维自动化!

程序员高级码农

MySQL 编程 程序员

征程 6X VDSP 调试方法

地平线开发者

自动驾驶 系统软件 地平线征程6

全球通信产业展会风向标|2025中国信息通信展9月在京召开

AIOTE智博会

通信展 信息通信展 北京通信展

傻瓜式一键部署你的网页,让全世界看见你的想法

Captain

谷歌云授权代理|90%用户不知道的5个谷歌云免费实用技巧

Cloud Ace 云一

谷歌云

iVX:图形化编程工程化实践及技术演进

代码制造者

优哩哩是什么平台?

web3区块链创业团队DappNetWork

华东站最后席位丨精彩嘉宾阵容,完整日程揭秘!2025 Altair 区域技术交流会邀您共探 AI + 仿真的智能未来

Altair RapidMiner

人工智能 AI 汽车 数字孪生 CAE

BeeWorks:构建企业智能数字化协作中枢,实现办公与业务系统的无缝整合

BeeWorks

即时通讯 IM 企业级应用

韩国电商巨头Coupang 如何利用分布式缓存加速机器学习模型训练

Alluxio

机器学习 AI 模型训练 电商平台 Coupang

如何在网络带宽和设备性能有限的环境下实现流畅直播,减少卡顿、提升清晰度。

腾讯云音视频

实时音视频

AI 又双叒叕胡说八道?揭秘 RAG:让大模型答题不再“靠演的”!

塞讯科技

可观测性 信息技术 LLM可观测

Databend 产品月报(2025年5月)

Databend

基于RPA技术的ECRobot企业智能体解决方案,打通企业自动化业务流程的最后一公里

伊克罗德信息科技

ActiveMQ 可观测性最佳实践

观测云

Activemq

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