Это нормальное поведение, когда исключение выдается на DataAdapter.Fill
, а не при построении SqlCommand. Потому что Fill
- это первая точка, в которой ADO.NET будет запрашивать вашу базу данных.
Что будет после "Неверный синтаксис рядом"? Потому что обычно база данных даст вам подсказку, где найти ошибку в SQL-выражении.
Ваше SQl-утверждение кажется правильным, если ваша Модель похожа на эту тестовую модель:
declare @tblVisitor table(
VisitorID int,
VisitorName varchar(100),
SkillID int
)
declare @tblSkill table(
SkillID int,
Skill int
)
INSERT INTO @tblVisitor VALUES(1,'Name1',1);
INSERT INTO @tblVisitor VALUES(2,'Name2',2);
INSERT INTO @tblVisitor VALUES(3,'Name3',3);
INSERT INTO @tblSkill VALUES(1,100);
INSERT INTO @tblSkill VALUES(2,200);
INSERT INTO @tblSkill VALUES(3,300);
SELECT VisitorID, VisitorName, Skill
FROM @tblVisitor tblVisitor LEFT JOIN
@tblSkill tblSkill ON tblVisitor.SkillID = tblSkill.SkillID
Результат:
VisitorID VisitorName Skill
1 Name1 100
2 Name2 200
3 Name3 300