有沒有什麼辦法可以直接從實體框架生成的調用中運行sql語句?或者我將不得不創建一個過程,然後通過實體框架調用該過程?在實體框架中運行sql?
5
A
回答
10
當時我周圍的Googling這個前些天,這是我找到了希望它能幫助
static void ExecuteSql(ObjectContext c, string sql)
{
var entityConnection = (System.Data.EntityClient.EntityConnection)c.Connection;
DbConnection conn = entityConnection.StoreConnection;
ConnectionState initialState = conn.State;
try
{
if (initialState != ConnectionState.Open)
conn.Open();
using (DbCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
}
}
finally
{
if (initialState != ConnectionState.Open)
conn.Close();
}
}
5
在EF 4.0,這是很容易的,因爲有對ObjectContext
,讓您直接執行存儲命令(即SQL)的新方法:
看到這個:ExecuteStoreCommand
如果你還在使用EF 3.5 SP1仍然可以在數據庫中直接執行查詢,如果你真的想這樣的:
var econn = ctx.Connection as EntityConnection;
var dbconn = econn.StoreConnection;
在這一點上可以訪問到底層數據庫的連接(dbconn),所以你可以使用正常ADO.NET代碼來執行查詢等
希望這有助於
亞歷
0
@Alex詹姆斯,出於好奇,就這樣被有效運行的代碼全文SQL位,如應該沒有性能開銷嗎?說,直接運行相同的全文sql代碼作爲查詢在SQL管理工作室。
1
ExecuteStoreQuery<>
和ExecuteStoreCommand
的例子中,你想要什麼:
using (NorthWindEntities ctx = new NorthWindEntities())
{
ctx.ExecuteStoreQuery<>()
ctx.ExecuteStoreCommand();
}
相關問題
- 1. 關於實體框架,在運行時
- 2. 在實體框架上運行原始SQL查詢的KeyValuePair
- 3. 實體框架:在運行時添加屬性/實體
- 4. 左連接實體框架未運行
- 5. 實體框架運行直接查詢
- 6. 實體框架的SQL查詢執行
- 7. 原始SQL實體框架
- 8. 實體框架 - 動態sql
- 9. SQL,MVC,實體框架
- 10. 實體框架SQL查詢
- 11. 使用實體框架運行本機T-SQL功能
- 12. 找出哪些代碼運行實體框架的SQL代碼
- 13. 使用desider輸出運行SQL查詢的實體框架
- 14. 是否可以使用實體框架運行本機sql?
- 15. 使用實體Sql在實體框架中批量刪除
- 16. 在實體框架中複製實體?
- 17. 運行時實體框架異常:參與關係的實體?
- 18. 實體框架進行MySQL實體
- 19. 實體框架中的E-SQL DbContext
- 20. 實體框架 - 潛在的SQL語句
- 21. 如何將以下SQL查詢轉換爲在實體框架中運行?
- 22. 如何在.NET Core 1.0中使用實體框架運行SQL腳本?
- 23. Linq在實體框架中
- 24. 在實體框架
- 25. 在實體框架
- 26. 在實體框架
- 27. 在實體框架
- 28. 實體框架:中斷正在運行SaveChanges
- 29. 實體框架6將在Task.Run()語句中正常運行嗎?
- 30. 如何在實體框架中運行計數
我會建議使用ObjectContext中的ExecuteStoreCommand()而不是上面的ExecuteSql() – 2011-03-12 23:50:42