Ответ 1
Они там в случае, если email
равна нулю.
Вы можете предотвратить это, установив UseDatabaseNullSemantics в true
Получает или задает значение, указывающее, будет ли отображаться нулевая семантика базы данных при сравнении двух операндов, обе из которых могут быть обнуляемы. Значение по умолчанию неверно. Например, (operand1 == operand2) будет переведен как: (operand1 = operand2), если UseDatabaseNullSemantics является истинным, соответственно (((operand1 = operand2) AND (NOT (операнд1 IS NULL ИЛИ операнд2 IS NULL))) ИЛИ ((операнд1 IS NULL) AND (операнд2 IS NULL))), если UseDatabaseNullSemantics является ложным.
Существуют различные способы применения этого.
Если вы хотите применить это только к одному запросу, вы можете сделать что-то вроде этого:
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; }
}