以下代码应该在我的数据库中运行sys.sp_setapprole存储过程。它不是。正如代码所在,我得到System.InvalidOperationException
,其中包含以下内部异常The FunctionImport 'sp_setapprole' could not be found in the container 'XXX'
。
我有什么想法可以执行这个存储过程吗?
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'.
”
答案 0 :(得分:4)
使用SqlConnection
和SqlCommand
。通过EntityCommand
从EF执行存储过程需要function import,系统过程的函数导入至少不支持设计器,因为在更新EDMX模型时,向导中没有看到常用的系统存储过程数据库。
答案 1 :(得分:0)
找到解决方案here: