所以我使用AspNetCore 1.0與EFCore 1.0,兩個最新版本據我所知。EntityFrameworkCore FromSql方法調用拋出System.NotSupportedException
使用DbSet上的FromSql方法執行查詢以刪除對象會引發異常。代碼和例外如下。
public void DeleteColumn(int p_ColumnID)
{
int temp = p_ColumnID;
string query = "DELETE FROM Columns WHERE ID = {0}";
var columnsList = m_context.Columns.FromSql(query, p_ColumnID).ToList();
foreach (Columns c in columnsList)
{
m_context.Columns.Remove(c);
}
m_context.SaveChanges();
}
執行FromSql電話後,我得到下面的異常
An exception of type 'System.NotSupportedException' occurred in Remotion.Linq.dll but was not handled in user code
Additional information: Could not parse expression 'value(Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1[ASPNET5_Scrum_Tool.Models.Columns]).FromSql("DELETE FROM Columns WHERE ID = {0}", __p_0)': This overload of the method 'Microsoft.EntityFrameworkCore.RelationalQueryableExtensions.FromSql' is currently not supported.
我不知道如何解決這個錯誤,並從谷歌上搜索我所遇到沒有類似的問題。
我也想知道,如果查詢/代碼是成功的,它會返回一個'IQueryable對象。是否僅包含查詢的結果,在這種情況下是否要刪除特定的Column對象?
不知道你在這裏試圖做什麼。您的DELETE語句不會返回已刪除的行,並且'FromSql'需要返回與您的實體類型匹配的列(請參見[here](https://docs.efproject.net/en/latest/querying/raw-sql)的.html#限制))。 –
@ stephen.vakil我編輯了原始的quiestion,希望能夠讓它更清晰。基本上,我試圖用specfic ID從數據庫中刪除一列。我期望FromSql方法返回帶有特定標識的正確列以刪除到columnsList變量中。之後,我遍歷列表並在保存之前從DbSet中刪除它。 – Foysal94
我已經多次閱讀過該文檔,我沒有從中獲得任何幫助來解決此問題。爲什麼我的DELETE語句不能返回行?而我又怎麼不返回一個Columns實體類型呢?我可能應該說這是我第一次使用C#與SQL/LINQ進行交互。 – Foysal94