2014-10-17 136 views
2

因此,我从我的数据库不是在dbo(默认)架构中导入存储过程到我的实体模型。实体框架6和存储过程与架构名称

存储过程的名称不是dbo.MyProc;相反,它是:person.MyProc(注意架构名称是“人”,而不是“DBO”)

出于某种原因,当我尝试执行存储过程我得到一个错误,就像的EntityFramework一无所知MyProc的是个人模式。以下是我尝试在我的代码来执行存储过程:

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

这是我得到的错误:

EntityCommand.CommandText的值是无效的 StoredProcedure的命令。该EntityCommand.CommandText值的格式必须是“ContainerName.FunctionImportName”

和追查下来一点的 ,这里是从实体框架的代码自动生成线:

回报 ( (IObjectContextAdapter)this).ObjectContext.ExecuteFunction(" dbOp_DeletePerson ", PersonId);

重申一下,dbOp_DeletePerson在“person”架构中不是dbo。

在此先感谢您的帮助!

回答

1

我想这是周围的工作在你的Model.Context.tt(我不喜欢它,但哦) http://www.dotnetbits.com/entity-framework-6-t4-templates/

  1. 寻找 “edmFunction.Name”
  2. 更换它以 “edmFunction.FullName”

    11

+0

是啊告诉我关于它。不幸的是,我们现在使用EF6;请更新我,如果你找到更好的替代 – DotNet98 2014-12-10 18:15:05

+0

现在是否有修复? – Julian50 2015-04-30 07:24:39

0

抱歉无法发表评论,所以..

现在有没有更好的解决方法?我的意思是修复永久性的东西? 因为修改后需要重新创建edmx文件,所以每次都要进行此修正。 更好的东西?