如何测试我的IQueryable是否将实际编译为SQL

时间:2019-01-26 08:46:58

标签: c# testing linq-to-entities iqueryable

我有一个在EF(6.0)上运行的项目,并尝试使用OData来实现简单的制表功能。

为了实现这一点,我们有很多垂直切片正在处理IQueryable<T>,从DbContext到Controller。 我们将域模型映射到这些片中的VM,这是有效的,因为LinqToEntities具有强大的功能,并将这些C#对象映射语句转换为SQL。我们的映射方法采用IQueryable<DomainModel>,调用.Select()并返回IQueryable<ViewModel>

但是我们的某些映射代码非常复杂,以至于我们正在限制LinqToEntities可以处理的范围,因此有时我们会编写可编译的代码,但是在运行时LinqToEntities告诉我们它太难了,不受支持:< / p>

  

LINQ to Entities无法识别方法'System.String ToString(System.String)',并且该方法无法转换为商店表达式。

很好,我们很乐意在这些限制内工作。但是我很想进行快速的单元测试,以警告我这种错误。

如何对我的映射代码是否与LinqToEntities兼容进行单元测试?


我希望我可以在单元测试中运行映射方法,并使用底层IQueryable,但是似乎不起作用。

有关错误的直接问题,请参见此处:Error when trying to test an isolated IQueryable

但是,即使我可以使代码执行,但我不确定这是否会真正起作用?

实现此目标的最佳方法是什么?

0 个答案:

没有答案