Csharp/C#教程:Moqentity frameworkExecuteSQLCommand分享


Moqentity frameworkExecuteSQLCommand

我已经读过,当使用moq时你无法模拟非虚函数。 我也读过,现在应该可以了。这是真的吗? 如果是这样,那么我想模拟以下查询:

DatabaseContext.Database.ExecuteSqlCommand(updateQuery, newValue); 

我在测试中覆盖了Context

 DAL.Context.DatabaseContext = mockContext.Object; 

我试过这个设置,但似乎查询仍然是我的常规数据库

 mockContext.Setup(c => c.Set()).Returns(mockBudgetData.Object); 

任何想法,也许executeccommand可以替换为其他东西,以便上面的行将捕获任何udpates到集合? 我一次更新多行时由于性能原因使用executionqlcommand。 常规EF太慢了

更新:

阅读以下文章, 如何Moqentity frameworkSqlQuery调用我想知道类似的实现是否适用于ExecuteSQLCommand …

我能做的Mock ExecuteSqlCommand在DataBase类中是不可能做的,就是在我的DbContextinheritance中创建相同的方法,但这次是虚拟的,并调用Database.ExecuteSqlCommand

 public class MyDbContext : DbContext { public virtual int ExecuteSqlCommand(string sql, params object[] parameters) { return Database.ExecuteSqlCommand(sql, parameters); } public virtual int ExecuteSqlCommand(TransactionalBehavior transactionalBehavior, string sql, params object[] parameters) { return Database.ExecuteSqlCommand(transactionalBehavior, sql, parameters); } 

然后我更改了业务代码以调用此创建的方法(非数据库方法):

 DatabaseContext.ExecuteSqlCommand(updateQuery, newValue); 

然后,它的工作原理

上述就是C#学习教程:Moqentity frameworkExecuteSQLCommand分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1005220.html

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐