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