dieses einfache Modell Gegeben:Warum fügt Entity Framework in der WHERE-Klausel unnötige (AND [param] IS NOT NULL) hinzu?
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; }
}
Und diese einfache Abfrage: (userID ist ein int)
dbContext.UserColumnGrid.Where(ucg => ucg.UserID == userID).ToList();
Die folgende Abfrage generiert wird:
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)
Warum ist Dieses UND NOT NULL-Kriterium hinzugefügt? Die Datenbank lässt Nullen in diesem Feld nicht zu, und ein Int kann in NULL nicht null sein.
Dies passiert überall in meinen Abfragen. Es ist ziemlich nervig, aber beeinflusst es die Leistung?
Wie kann ich es loswerden?
Dies ist auf einem Datenbank-ersten Modell.
Wie ist die erfasste Variable 'userID' definiert? –
Es ist ein int an die Funktion übergeben, die diese Abfrage enthält: public void LoadUserSettings (int userID) –
Ich nehme an, dass userid mit NOT NULL definiert ist oder wie PK ist dies so? – NoChance