web-dev-qa-db-ja.com

生のSQLクエリとEntityFramework Core

アプリケーションをASP.NETMVCCoreとEntityFramework Coreに移行しましたが、問題が見つかりました。私はこのようなエンティティへの生のSQLクエリを持っています

var rawSQL = dbContext.Database.SqlQuery<SomeModel>("Raw SQL Query").ToList();

しかし、SqlQuery<T>にはcontext.Databaseはありません。この問題の解決策はありますか?

12
Obin

使用できる拡張メソッドがあるため、必ずusing Microsoft.Data.Entity;を追加してください。

var rawSQL = dbContext.SomeModels.FromSql("your SQL");

さらに良いことに、(SQLインジェクション攻撃のリスクがある)生のSQLを使用する代わりに、このFromSqlメソッドを使用すると、次のようなパラメーター化されたクエリを使用できます。

dbContext.SomeModels.FromSql("SELECT * FROM dbo.Blogs WHERE Name = @p0", blogName);
12
iberodev