Почему в .NET 3.5 L2SQL работает плохо с обнуляемыми строками? - PullRequest
0 голосов
/ 03 ноября 2011

Это мой запрос из таблицы Persons со столбцом имени nullable varchar:

(from p in Persons
where p.Name == null || p.Name.Equals(String.Empty)
select p).Count()

В .NET 4.0 он переводится в:

DECLARE @p0 VarChar(1000) = ''
SELECT COUNT(*)
FROM [Persons] AS [t0]
WHERE ([t0].[Name] IS NULL) OR ([t0].[Name] = @p0)

, однако в .NET 3.5 в:

DECLARE @p0 VarChar(1000) = ''
SELECT COUNT(*)
FROM [Persons] AS [t0]
WHERE ([t0].[Name] = @p0)

Кажется, что 3.5 игнорирует некоторые записи, дающие неверные результаты.

1 Ответ

1 голос
/ 03 ноября 2011

Я полагаю, вы ищете неправильный запрос для вашего примера .NET 4.0.Запрашиваемое поле не имеет ничего общего с полем Name, которое просматривает ваш запрос LINQ.

Также убедитесь, что вы на самом деле используете LINQ to SQL в обоих примерах.Если вы построили их по отдельности, есть вероятность, что пример .NET 4.0 может использовать Entity Framework, который в некоторых ситуациях может выдавать разные запросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...