【问题标题】:Entity Framework select where null is using "FieldName = null" instead of "FieldName is null" [duplicate]实体框架选择 null 使用“FieldName = null”而不是“FieldName 为 null”[重复]
【发布时间】:2012-11-26 16:10:57
【问题描述】:

可能重复:
How can i query for null values in entity framework?

我正在使用实体框架作为我的 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


【解决方案1】:

试着写

m_Context.DomainEntities.Where(e => e.EntityParentID == Convert.ToInt32(i_UnitID));

并检查生成的 SQL 查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 2019-04-27
    • 2012-03-04
    • 2018-12-23
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多