我为测试我的存储库类做了一个蠢事,它在我放置DefaultIfEmpty(新的Drivers())时有效,但是当我运行程序时,我收到此错误:用于查询运算符'DefaultIfEmpty'的不支持的重载
但是当我把它放回 DefaultIfEmpty()时,它工作正常但我的* 强文本 * moles test现在返回一个空值..这是我的代码:
var result = from p in this.context.AirPositions
join a in this.context.Airplane p.airplane_id equals a.id
join s in this.context.Status on p.status_id equals s.id
join dp in this.context.DriversPositions on p.id equals dp.position_id into dpJoin
from ds in dpJoin.DefaultIfEmpty(new DriversPosition())
join d in this.context.Drivers on ds.driver_id equals d.id into dsJoin
from drs in dsJoin.DefaultIfEmpty(new Driver())
orderby p.timesent descending
select new PositionViewModel()
{ ... };
答案 0 :(得分:0)
似乎linq提供程序不支持DefaultOrEmpty函数的重载,该函数采用默认值。
如果要使用moles测试,则必须将代码重写为其他内容。我知道测试不应该改变你的代码。尝试使用SingleOrDefault重写代码。
答案 1 :(得分:0)
使用Linq-to-Sql和Linq-to-Object运行的代码似乎存在问题。
我解决了以下问题:
var result = from p in this.context.AirPositions
join a in this.context.Airplane on p.asset_id equals a.id
let driver = (from dd in this.context.DriversPositions.Where(u => u.position_id == p.id)
join d in this.context.Drivers on dd.driver_id equals d.id
select d).FirstOrDefault()
orderby p.timesent descending
select new PositionViewModel() {...}
希望这有助于其他人:)