Они там, если email
равно нулю.
Вы можете предотвратить это, установив UseDatabaseNullSemantics в true
Получает или задает значение, указывающее, отображается ли нулевая семантика базы данных при сравнении двух операндов, обаиз которых потенциально обнуляемы.Значение по умолчанию неверно.Например (операнд1 == операнд2) будет переведен как: (операнд1 = операнд2), если UseDatabaseNullSemantics имеет значение true, соответственно (((операнд1 = операнд2) И (НЕ (операнд1 равен нулю ИЛИ операнд2 равен нулю))) ИЛИ ((операнд1 есть)NULL) И (operand2 IS NULL))), если UseDatabaseNullSemantics имеет значение false.
Существуют различные способы применить это.
Если вы хотите применить это только к одному запросу, выможет сделать что-то вроде этого:
using(TheContext dbContext = new TheContext()) {
dbContext.Configuration.UseDatabaseNullSemantics = true;
...
if (email != null)
{
query = query.Where(r => r.Email == email);
}
}
Если вы хотите применить это ко всем запросам:
public class TheContext : DbContext
{
public TheContext()
{
this.Configuration.UseDatabaseNullSemantics = true;
}
}
Вы также можете изменить свойство на [Required]
:
public class Model {
[Required]
public string Email { get; set; }
}