最初に私はEF v6.0を使用しています。私はこの機能を以下に持っています。Entity Framework 6.0モデルを表示するRaw SQL
public List<UserProgressViewModel> GetUserProgresses(int userId)
{
return Context.Database.SqlQuery<UserProgressViewModel>(
"SELECT Puzzles.Name AS PuzzleName, UserProgresses.Minute, " +
"UserProgresses.Session FROM UserProgresses " +
"INNER JOIN Puzzles ON Puzzles.Id = UserProgresses.PuzzleId " +
"WHERE UserProgresses.UserId = @userid", new SqlParameter("@userid", userId)).ToList();
}
私のUserProgressViewModelクラスは以下のとおりです。
public class UserProgressViewModel
{
public string PuzzleName { get; set; }
public int Minute { get; set; }
public int Session { get; set; }
}
(このクラスは、それが、唯一のビューモデルDbSetいない。)
私はアプリケーションを(それはWebAPIのプロジェクトです)私はこのエラーを取得する実行します。
「近くに無効な構文 『UserProgresses』 "
Mssqlでこのクエリを実行しようとしましたが正常に動作します。結果は私が抜け出した時と同じようになった。
EF 6.0がこのような生のSQLクエリをサポートしていないかどうかを調べましたが、サポートしています。
(このページによると:http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/advanced-entity-framework-scenarios-for-an-mvc-web-application#rawsql)
私には見えないものは何ですか?
ありがとう、素晴らしいものがあります!
''UserProgresses'の近くに不正な構文がSQL Serverによって生成された場合、そのクエリが構文的に有効であることを確認してください。問題は起こりにくいですが、Puzzles。NameとしてPuzzles。[Name] 'と' UserProgresses.Minute'を最低でも 'UserProgresses。[Minute]'( 'Session'には同上)と書いています。 https://technet.microsoft.com/en-us/library/ms189822(v=sql.110).aspx –
これはVisual Studioの一時的な問題であるため、OPのコメントに答えとして投票が終了しています@tenbitsが提供されました。 –