下面的代碼應該在我的數據庫中運行sys.sp_setapprole存儲過程。它不是。由於代碼現在我得到一個System.InvalidOperationException
與以下內部異常The FunctionImport 'sp_setapprole' could not be found in the container 'XXX'
。如何從Entity Framework執行系統存儲過程?
任何想法如何執行此存儲過程?
partial void OnContextCreated()
{
this.Connection.StateChange += (sender, args) =>
{
if (args.CurrentState == ConnectionState.Open)
{
var conn = (EntityConnection)sender;
EntityCommand cmd = conn.CreateCommand();
cmd.CommandText = "XXX.sp_setapprole";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("rolename", "XXX");
cmd.Parameters.AddWithValue("password", "XXX");
cmd.ExecuteScalar();
}
};
}
更新1 - 使用SqlConnection
和SqlCommand
導致InvalidCastException的, 「Unable to cast object of type 'System.Data.EntityClient.EntityConnection' to type 'System.Data.SqlClient.SqlConnection'.
」
你不應該簡單地發佈鏈接作爲一個解決方案,特別是當鏈接是一種替代方法來調用未使用實體框架的過程。 Ladislav下面的答案是正確的。 – 2013-06-13 14:55:35