【发布时间】:2012-11-26 16:10:57
【问题描述】:
我正在使用实体框架作为我的 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
有没有使用实体框架的不同方法来实现这一点?
【问题讨论】:
-
返回的数据不正确吗?
-
是的,有两条记录的父 ID 等于 null,如果我将 where 子句更改为
EntityParentID is null,则查询返回正确的数据。 -
副本的链接在哪里?
标签: c# sql-server asp.net-mvc entity-framework