エンティティフレームワークコアが非問合せ呼び出しを実行できるか

c# entity-framework entity-framework-core

質問

残念ながら私のEFアプリケーションは変更できないストアドプロシージャを呼び出さなければなりません。これは理想的ではありませんが、私は通常それを回避することができます。しかし、私は何かを返すストアドプロシージャを持っています。 EFコアはこれをどのように処理しますか?以前のバージョンでは、ExecuteNonQueryを実行することができましたが、EFコアで何か類似するものを見つけることができませんでした。

私は通常、ヘルパーを使ってクエリを実行します。ここで、Tは返される型にマップされるクラスです。EFは、

context.Set<T>()
.AsNoTracking()
.FromSql(query, args)
.ToListAsync();

しかし、Setのように常に.Queryのような型が必要です。文脈の中で見たことがない限り、クエリできない呼び出しを行うことができます。何か不足していますか?

私はMicrosoft.EntityFrameworkCoreを使用しています:1.2.0

受け入れられた回答

DbContext.DatabaseExecuteSqlCommandメソッドを使用できます

using(var context = new SampleContext())
{
    var commandText = "INSERT Categories (CategoryName) VALUES (@CategoryName)";
    var name = new SqlParameter("@CategoryName", "Test");
    context.Database.ExecuteSqlCommand(commandText, name);
} 

または、コンテキストからADO.NETコールに戻すことができます。

using (var context = new SampleContext())
using (var command = context.Database.GetDbConnection().CreateCommand())
{
    command.CommandText = "DELETE From Table1";
    context.Database.OpenConnection();
    command.ExecuteNonQuery();
}


Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ