Entity Framework 6和带有模式名称的存储过程

4

我从数据库中导入了一个存储过程,但该存储过程不在dbo (默认)架构中,而是在person架构中,其名称为:NOT dbo.MyProc而是person.MyProc(注意架构名称为“person”,而不是“dbo”)。

由于某种原因,当我尝试执行该存储过程时,我会收到错误提示,好像EntityFramework不知道MyProc在person架构中。以下是我在代码中尝试执行存储过程的方式:

using (var dbContext = new DataModel.PersonEntity())
{
    dbContext.dbOp_DeletePerson(personId);
}

这是我收到的错误信息:
实体命令的 CommandText 值对于存储过程命令无效。EntityCommand.CommandText 值必须采用 'ContainerName.FunctionImportName' 的形式。
再往下追踪一下,以下是 Entity Framework 自动生成的代码行:
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("dbOp_DeletePerson", PersonId);
重申一下,dbOp_DeletePerson 在 "person" 模式中而不是 dbo 中。
非常感谢您的帮助!
2个回答

2

是啊,跟我说说吧。很遗憾我不知道有其他更好的替代方案;我们现在正在使用EF6。如果您找到更好的替代方案,请务必告诉我更新一下。 - DotNet98

0

我遇到了这个问题,并通过更改其中一个重复存储过程的函数导入名称(以及函数导入结果名称(如果过程返回数据))来解决它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接