为什么实体框架在WHERE子句中添加不必要的(AND [param] IS NOT NULL)?

ECC*_*Dan 8 .net c# entity-framework entity-framework-6

鉴于这个简单的模型:

public partial class UserColumnGrid
    {
        public int UserColumnGridID { get; set; }
        public int UserID { get; set; }
        public int ColumnGridID { get; set; }
        public int ColumnWidth { get; set; }
        public bool IsVisible { get; set; }

        public virtual ColumnGrid ColumnGrid { get; set; }
        public virtual User User { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

而这个简单的查询:(userID是一个i​​nt)

dbContext.UserColumnGrid.Where(ucg => ucg.UserID == userID).ToList();
Run Code Online (Sandbox Code Playgroud)

生成以下查询:

SELECT [Extent1].[UserColumnGridID]  AS [UserColumnGridID],
       [Extent1].[UserID]            AS [UserID],
       [Extent1].[ColumnGridID]      AS [ColumnGridID],
       [Extent1].[ColumnWidth]       AS [ColumnWidth],
       [Extent1].[IsVisible]         AS [IsVisible]
FROM   [dbo].[UserColumnGrid] AS [Extent1]
WHERE  ([Extent1].[UserID] = 1 /* @p__linq__0 */)
       AND (1 /* @p__linq__0 */ IS NOT NULL)
Run Code Online (Sandbox Code Playgroud)

为什么添加了这个AND NOT NULL标准?数据库不允许该字段中的空值,并且.net中的int不能为null

这种情况发生在我的查询中.这很烦人,但是它会影响性能吗?

我怎么能摆脱它?

这是在数据库优先模型上.

krp*_*sad 2

通过使用数据注释标记模型类中所需的属性,我摆脱了 WHERE 子句中额外的“(AND [param] IS NOT NULL)”。

我正在使用 EF 6。