2017-02-17 4 views
1

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

私は通常、Tは、戻り値の型EFにマップクラスがシリアライズ可能であるようなヘルパーを通じて、私のクエリを実行します。そうであるように設定が常にタイプを必要とするように見えるしかし

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

。クエリ。文脈の中で見たことがない限り、クエリできない呼び出しを行うことができます。何か不足していますか?私はMicrosoft.EntityFrameworkCoreを使用しています

:1.2.0

答えて

1

あなたはDbContext.DatabaseExecuteSqlCommand method

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 calls off the Contextに戻すことができます:私は見

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

を。ありがとう。これを動作させるには、Microsoft.EntityFrameworkCore.Relationalパッケージをプロジェクトに追加する必要がありました。 – evenflow58

+0

上記で概説したメソッドは、Microsoft.EntityFrameworkCore.Relationalに依存しません。あなたは、あなたのプロジェクトで何か他のことにそれを必要としていたはずです。 –

関連する問題