Ing*_*rid 30 c# stored-procedures entity-framework azure
我试图从EntityFramework访问存储过程.
我已按照以下步骤操作:
首先,我在Azure数据库中创建了存储过程:

然后,我从数据库更新了.edmx模型,只选择了我想要的StoredProcedure.

完成后,在函数导入中,我看到已添加StoredProcedure,但未在StoredProcedures部分中添加.我能做什么才能出现在这里?

在"函数导入"部分中,所有参数都设置为"输入",而"MaxReference"应标记为"输出".我该怎么改变它?

虽然这两个问题我执行了代码:

我得到以下例外:
EntityCommandCompilationException
An error occurred while preparing command definition. See the inner exception for details.
Run Code Online (Sandbox Code Playgroud)
和InnerException:
The function import 'DataModelEntities.AssignMaxSalesRef' cannot be executed because it is not assigned to a storage function.
Run Code Online (Sandbox Code Playgroud)

Ale*_*lex 30
您可能想参考这篇博文:FunctionImport未映射到商店函数Error,它讨论了类似的问题.原因显然是:
我不得不对存储过程进行更改,并从实体数据模型Xml文件(*.edmx)中删除它
通过以下逐步解决方案:
有一个简单的解决方案来修复该错误.首先打开edmx文件,然后右键单击拥有存储过程的模型.单击添加,然后选择"添加功能导入".
添加在Context文件中使用的相同函数导入名称(如果像我一样,该方法已经创建但是搞砸了,否则全新,并且无论如何都会重新创建).选择您要修复的存储过程名称.选择实体,然后单击"确定".可能会弹出一个新窗口"验证FunctionImport名称是否唯一".
如果是这种情况,并且您弹出"验证FunctionImport名称是否唯一"窗口,请执行以下操作:打开*.edmx文件并右键单击要更新的模型.选择"在模型浏览器中显示".现在,模型浏览器窗口打开了.转至:{myProject} .DataModel> EntityContainer:{somethingEntities}>函数导入.导致问题的函数导入应该在那里,只需删除它并保存*.edmx文件.
尝试再次添加功能导入.瞧!这次没问题.保存*.edmx文件并重新创建上下文文件(通过简单的非侵入式更改,例如向{myProject} .Context.tt文件添加空格).确保新方法:
public virtual ObjectResult<MyEntity> <MyEntity>_NameoftheSP(parametets)存在于您的上下文文件中.
另一个故障排除资源,在更新edmx文件时有类似的逐步说明(和图像!):无法执行函数导入,因为它未映射到存储函数.
MsT*_*app 26
这篇文章应该是一个评论,但我没有足够的代表评论.
我遇到了类似的问题.我的存储过程是可见的,但我仍然得到错误.Alex的这个问题和答案让我在模型浏览器中查看Function Imports,我看到每个存储过程都有多个条目.他们有序列号,以防止它们成为真正的重复.我删除了函数导入下的所有内容以及存储过程/函数下的所有内容,然后通过从数据库更新模型重新添加它们.我的问题现在已经解决了.
| 归档时间: |
|
| 查看次数: |
32041 次 |
| 最近记录: |