【发布时间】:2020-09-01 20:47:36
【问题描述】:
我正在使用 Entity Framework Core 并尝试将整数集合转换为字符串,然后将字符串作为参数传递给 FromSql 函数。
这是我的问题的简化示例:
IQueryable<Equipment> query = _context.Set<Equipment>();
const string s = "150999, 720045, 720046";
IQueryable<SignalGantryEquipment> filteredSignalGantryEquipments
= query.FromSql("select id, name from equipment " +
"where id in ({0}) and type = {1} " +
"order by name", s, equipmentId)
.Select(x => new Equipment
{
Id = x.Id,
Name = x.Name
});
return filteredSignalGantryEquipments;
我希望上面的代码可以工作。但是,我收到以下错误:
问题是 100% 与参数化字符串 s 相关,因为我已经测试了 equipmentId。
我发现很奇怪的是,如果我删除字符串 s 作为参数并将值硬编码到位,它会按预期工作而没有错误。
IQueryable<SignalGantryEquipment> filteredSignalGantryEquipments
= query.FromSql("select id, name from signal_gantry_equipment " +
"where id in (150999, 720045, 720046) and equipment_type = {0} " +
"order by name", equipmentId)
.Select(x => new SignalGantryEquipment
{
Id = x.Id,
Name = x.Name
});
为什么会这样,如何将整数集合作为参数?
【问题讨论】:
-
你必须使用原始 SQL 吗?如果不是这样,使用 Linq 可以做得更干净(imo)。
标签: c# oracle entity-framework entity-framework-core grpc