Почему LINQ to SQL преобразует мой строковый параметр в имя столбца? - PullRequest
0 голосов
/ 07 октября 2008

Этот запрос Linq to SQL ...

    Return (From t In Db.Concessions Where t.Country = "ga" Select t.ConcessionID, t.Title, t.Country)

... генерирует этот SQL:

SELECT [t0].[ConcessionID], [t0].[Title], [t0].[Country]
FROM [dbo].[Concessions] AS [t0]
WHERE [t0].[Country] = ga

... когда я хочу

WHERE [t0].[Country] = 'ga'

Есть идеи, почему?

Ответы [ 5 ]

1 голос
/ 07 октября 2008

Дикая догадка .... это может быть?

t.Country = "ga"

против

t.Country == "ga"

0 голосов
/ 08 октября 2008

Я не могу быть уверен в этом конкретном примере, но есть известная ошибка, которая вызывает аналогичные проблемы с полями nvarchar (1). Это может быть связано.

Здесь есть сообщение об ошибке , и я также написал об этом на моем собственном сайте

0 голосов
/ 08 октября 2008

Ответ

Поле Country было символом (2); Я изменил его на nvarchar (50), и это решило проблему. Это ошибка в Linq to SQL?

0 голосов
/ 08 октября 2008

На самом деле, он не должен генерировать ни один из них. Конвертирует константу в параметр, поэтому будет:

SELECT [t0].[ConcessionID], [t0].[Title], [t0].[Country]
FROM [dbo].[Concessions] AS [t0]
WHERE [t0].[Country] = @p0

с @ p0, переданным как 'ga'. может ли это быть тем, что вы видите?

0 голосов
/ 07 октября 2008

выбор должен быть

Select New With {t.ConcessionID, t.Title, t.Country}

вместо

Select t.ConcessionID, t.Title, t.Country

вам нужно создать новый экземпляр анонимного типа, содержащий поля.

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