模拟 DbContext.Set()?

2023-11-21

我们首先使用 EF 代码,并为我们的销售数据库提供数据上下文。此外,我们还有一个类位于数据上下文之上并执行一些基本的 CRUD 操作。

例如,我们有以下函数:

public static T Create<T>(int userId, T entity) where T : class, IAllowCreate
{
    if (entity == null)
        throw new ArgumentNullException("entity");

    using (SalesContext dc = new SalesContext())
    {
         dc.Set<T>().Add(entity);
         dc.SaveChanges();

         return entity;
    }
}

I found 的一个例子如何创建假上下文和 IDBset 属性。我开始实施它,但遇到了一个问题。

当我们尝试创建通用的 CRUD 方法时,我们在代码中相当自由地使用 dc.Set()(如上所示)。我们只需执行 Read(),而不是使用 ReadCustomer、ReadContact 等。但是,dc.Set 返回一个 DbSet,而不是 IDbSet,所以我无法模拟它。

有没有人能够模拟或伪造 DbContext 并且仍然使用 Set 功能?


interface ISalesContext
{
    IDbSet<T> GetIDbSet<T>();
}

class SalesContext : DbContext, ISalesContext
{
    public IDbSet<T> GetIDbSet<T>()
    {
        return Set<T>();
    }
}

我使用了不同的名称,但您可以使用new如果您想隐藏常规实现,请使用运算符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模拟 DbContext.Set()? 的相关文章

随机推荐

  • Excel:如果上面的单元格具有相同的值,则抑制?

    当上面的单元格具有相同的值时 Excel 是否可以抑制列中的值 我想要这样的东西 A 1234 2345 3456 B 4567 C 5678 6789 D 7890 8901 其中 A 下面的 2 个单元格实际上是 A 但被隐藏了 理想情
  • 从模块导入的变量在再次导入同一模块后变为$null

    我有一个简单的模块 varExp psm1 var1 20 导出模块成员 变量 var1 我将此模块导入到 PS 会话中 PS gt 导入模块 varExp psm1 then PS gt var1 20 但是当我第二次导入它之后 PS g
  • 了解 Selenium IDE 与 Selenium RC

    Selenium IDE 和 Selenium RC 在功能上有什么区别 Selenium IDE 是一个 Firefox 插件 为您提供用于记录测试的基本记录器 这些测试使用关键字记录在基于 HTML 表的架构中 IDE 使您能够将代码导
  • 如何使用 php 命令行定义多个 ini 设置?

    我正在尝试允许allow url fopen and rename暂时用于脚本的函数 我可以只用一个函数来完成它 但不能同时使用两个函数 像这样的东西 php d allow url fopen on rename on
  • 为强制定向网络中的每个链接指定颜色,networkD3::forceNetwork()

    问题是根据链接的值或权重指定两种不同的颜色networkD3 forceNetwork在 R 中 例如 Blue对于大于1的链接权重 dark对于小于 1 的链接权重 示例代码 复制自here the forceNetwork部分 libr
  • 为什么 Ruby 似乎随机访问目录中的文件?

    这是设计使然吗 这是代码 class FileRenamer def RenameFiles folder path files Dir glob folder path end end puts Renaming files rename
  • Java Swing GUI 的自动化测试 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有哪些选项可以为用 Java Swing 编写的 GUI 构建自动化测试 我想测试一些使用以下代码编写的 GUINetBeans Swing GUI
  • 惰性洗牌算法

    我有一个很大的元素列表 我想以随机顺序迭代它们 但是 我无法修改该列表 也不想创建它的副本 因为 1 它很大 2 可以预期迭代会提前取消 List
  • 解析 XPath 表达式

    我正在尝试为 XPath 创建一个 AET 抽象表达式树 因为我正在编写一个 WYSIWYG XSL 编辑器 在过去的三到四个小时里 我一直在与 XPath BNF 碰头 我想到了另一个解决方案 我想我可以编写一个实现 IXPathNavi
  • 在 Android 中禁用屏幕锁定(电源)按钮

    我希望当我的应用程序运行电源按钮时 按下该按钮会锁定屏幕并且屏幕变黑 应该被禁用 使用户无法锁定屏幕 我在三星 Galaxy S 手机的默认相机应用程序中注意到了这个东西 这也是我尝试做同样事情的原因 我还有一个与相机相关的应用程序 试试这
  • vim 显示两行选项卡

    当你同时打开很多文件时 Vim 是否可以显示两行选项卡 我不希望出现选项卡溢出样式的箭头 这不完全是你所要求的 但我从使用选项卡切换到使用 BufExplorer 在它们之间切换的普通旧式多个缓冲区 http www vim org scr
  • 比较 VBA 中的日期

    我有两个文本框 有两个不同的日期 orderDate 和 receiveDate 收到的日期需要手动输入到表单中 我想包括在 orderDate 之后应该发生 receiveData 的验证 我已经尝试过 If txtRecievedDat
  • 使用相机拍摄的照片不包含任何 ALAsset 元数据

    最奇怪的事情正在发生 我有一个操作表 用户可以选择使用相机拍照或从相机胶卷中选择一张照片 当 UIImagePicker 从选择返回时 我使用 ALAssetsLibrary 来确定照片中嵌入的 GPS 信息 从相机胶卷中选择照片效果非常好
  • Beautifulsoup,达到最大递归深度

    这是一个beautifulsoup抓取所有内容的过程 p html 标签 从某些网页抓取内容后 我收到一条错误消息 指出超出了最大递归深度 def printText tags for tag in tags if tag class Na
  • 使用curl在PHP中获取HTTP代码

    我使用 CURL 来获取站点的状态 如果它是向上 向下或重定向到另一个站点 我想让它尽可能精简 但效果不佳 我把它包装在一个函数中 它工作正常 但性能不是最好的 因为它下载整个页面 如果我删除 output curl exec ch 它返回
  • 如何拦截网络请求

    有没有类似 Chromium 的东西chrome webRequestSafari 扩展 我浏览了他们的文档here 我能找到的最接近的东西是SafariBeforeNavigateEvent 这将阻止新页面加载 但仍会将请求发送到服务器
  • python-C++ 扩展可以获取 C++ 对象并调用其成员函数吗?

    我正在编写一个 python C 应用程序 它将从 python 调用 C 扩展中的方法 假设我的 C 有一个类 class A private int i public A int i i i int get i return i A a
  • 如何使用 Google 地方信息获取地名数组?

    我正在尝试访问 Google 地方信息以返回围绕纬度和经度的 50 个餐厅名称的数组 但在提出请求时遇到了困难 我已经有了确定用户纬度和经度的代码 并且我已经从 Google 获得了 API 密钥 我只是不知道如何通过 URL 发出请求 而
  • 如何访问作为 RMarkdown 文档中参数传递的文件中的数据?

    遵循 RMarkdown 的最后一个示例参数化报告页面 我正在尝试使用Shiny界面选择我的输入文件 其中包含以下代码YAML标头 params data input file label Input dataset value myDat
  • 模拟 DbContext.Set()?

    我们首先使用 EF 代码 并为我们的销售数据库提供数据上下文 此外 我们还有一个类位于数据上下文之上并执行一些基本的 CRUD 操作 例如 我们有以下函数 public static T Create