我正在使用实体框架作为我的DAL。 使用sql profiler,当我运行以下代码行时,我已经截获了对数据库的查询
m_Context.DomainEntities.Where(e => e.EntityParentID == i_UnitID);
当i_UnitID
等于null
时,其生成的查询为:
exec sp_executesql N'SELECT
[Extent1].[EntityTypeID] AS [EntityTypeID],
[Extent1].[EntityID] AS [EntityID],
[Extent1].[EntityName] AS [EntityName],
[Extent1].[EntityParentID] AS [EntityParentID],
...
FROM [dbo].[DomainEntities] AS [Extent1]
WHERE ([Extent1].[EntityTypeID] IN ( CAST( ''1'' AS int), CAST( ''2'' AS int), CAST( ''3'' AS int))) AND ([Extent1].[EntityParentID] = @p__linq__0)',N'@p__linq__0 int',@p__linq__0=NULL
请注意,它在where子句中使用[Extent1].[EntityParentID] = @p__linq__0
。
那当然是有效的,我需要它来生成以下
[Extent1].[EntityParentID] is NULL
是否有使用实体框架实现此目的的不同方法?
答案 0 :(得分:0)
尝试写
m_Context.DomainEntities.Where(e => e.EntityParentID == Convert.ToInt32(i_UnitID));
并检查生成的SQL查询。