Ent Entity Framework Core可以運行非查詢調用嗎?

c# entity-framework entity-framework-core

不幸的是我的EF應用程序必須調用我無法更改的存儲過程。雖然這不是理想的,但我通常可以繞過它。但是,我有一個存儲過程確實返回任何東西。 EF核心如何解決這個問題?我知道在以前的版本中你可以運行ExecuteNonQuery但我在EF Core中找不到類似的東西。

我通常通過幫助程序運行我的查詢,其中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
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow