我得到一个要更新的实体列表,我有他们的ID.我想从数据库中获取原始的,所以我这样做:
String[] ids = updatedEvents.Select(ue => ue.id).ToArray();
var originalEventsToUpdate = Db.tbl_ffk_event
.Where(e => ids.Contains(e.id))
.ToArray();
但是我使用日志获得的是这个生成的SQL:
SELECT [t0].[id], [t0].[fs_mapping_id], [t0].[fs_id_value], [t0].[desc]
FROM [dbo].[tbl_ffk_event] AS [t0]
WHERE 0 = 1
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 4.0.30319.1
而SQL意味着“获得整个表格”.
我怎样才能生成这样的“IN”:
SELECT [t0].[id], [t0].[fs_mapping_id], [t0].[fs_id_value], [t0].[desc]
FROM [dbo].[tbl_ffk_event] AS [t0]
WHERE [t0].[id] IN ('aaa','bbb','ccc','ddd','eee',)
提前致谢.
编辑:
我感到愚蠢,我没有看到WHERE 0 = 1.这是因为在那一点,ids收集中没有任何东西.我现在检查确保有项目,并正确生成SQL.抱歉.
最佳答案 实际上,由于条款WHERE 0 = 1,此SQL将返回一个空记录集(即根据模式正确映射,但没有行).
你给出的代码似乎是正确的,但有些东西让查询提供者确信永远不会有匹配的行.
假设它在这里不正确,我会查看id属性的列映射.它是否与数据库正确匹配?