实体框架 EF4.1 - 存储过程“在容器中找不到”

2023-11-27

我的数据库中有一个 SP。对于 EF4.1,使用数据库上下文API.

从数据模型导入函数后,对存储过程的引用在我的开发环境中工作正常。但是,当发布到服务器时,它会失败并显示类似消息:在容器“TallyJ2Entities”中找不到 FunctionImport“SqlSearch”。所有其他数据访问都工作正常。

似乎在生产中,EF4 配置的某些方面被遗忘了。

数据库相同,两台服务器均为 SQL 2008(本地为 Express SP1 10.50.2500,主机为 Express RTM 10.50.1600)。

我什至将 EDMX 编辑器直接指向生产数据库并进行更新。结果在开发中运行良好,但在服务器上以同样的方式失败。

其他类似问题here别帮忙。其他人似乎也有类似的问题在此输入链接描述.

有什么建议么?

Update:我发现当我在调试模式下部署主机时,问题就消失了!

在我的 DbContext 派生类中,我放置了以下代码:

((IObjectContextAdapter)this).ObjectContext.MetadataWorkspace
var findFunction = metadataWorkspace.GetItems(DataSpace.SSpace)
            .SelectMany(gi => gi.MetadataProperties)
            .Where(m=> Equals(m.Value, "SqlSearch"))
            .Select(m => "Found {0}".FilledWith(m.Value))
            .FirstOrDefault();

当我登录时findFunction结果,事实证明服务器(在发布模式下)没有找到它,而在开发中,它找到了。


如果使用 EF 4.1 及更高版本,请在 Context.cs 文件中将“ObjectParameter”更改为“SqlParameter”,将“ExecuteFunction”更改为“ExecuteStoreQuery”。

“ExecuteStoreQuery”方法还希望您在存储过程的前面添加参数名称。找到下面的一个片段:

var param1Parameter = param1 != null ?
new SqlParameter("param1", param1) :
new SqlParameter("param1", typeof(string));

var param2Parameter = param2 != null ?
new SqlParameter("param2", param2) :
new SqlParameter("param2", typeof(int));

return ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreQuery<sp_TestSproc_Result>("sp_TestSproc @param1, @param2", param1Parameter, param2Parameter);

如果使用模板生成代码,您可能会发现下面的代码片段也很有用。 IE。我修改了标准“Fluent TT”生成器以适应 EF 4.3:

    void WriteFunctionImport(EdmFunction edmFunction, bool includeMergeOption)
    {
        var parameters = FunctionImportParameter.Create(edmFunction.Parameters, Code, EFTools);
        var paramList = String.Join(", ", parameters.Select(p => p.FunctionParameterType + " " + p.FunctionParameterName).ToArray());
        var returnType = edmFunction.ReturnParameter == null ? null : EFTools.GetElementType(edmFunction.ReturnParameter.TypeUsage);
        var processedReturn = returnType == null ? "int" : "ObjectResult<" + MultiSchemaEscape(returnType) + ">";

        if (includeMergeOption)
        {
            paramList = Code.StringAfter(paramList, ", ") + "MergeOption mergeOption";
        }
    #>

        <#=AccessibilityAndVirtual(Accessibility.ForMethod(edmFunction))#> <#=processedReturn#> <#=Code.Escape(edmFunction)#>(<#=paramList#>)
        {
    <#+
            if(returnType != null && (returnType.EdmType.BuiltInTypeKind == BuiltInTypeKind.EntityType ||
                                      returnType.EdmType.BuiltInTypeKind == BuiltInTypeKind.ComplexType))
            {
    #>
            ((IObjectContextAdapter)this).ObjectContext.MetadataWorkspace.LoadFromAssembly(typeof(<#=MultiSchemaEscape(returnType)#>).Assembly);

    <#+
            }

            foreach (var parameter in parameters.Where(p => p.NeedsLocalVariable))
            {
                var isNotNull = parameter.IsNullableOfT ? parameter.FunctionParameterName + ".HasValue" : parameter.FunctionParameterName + " != null";
                var notNullInit = "new SqlParameter(\"" + parameter.EsqlParameterName + "\", " + parameter.FunctionParameterName + ")";
                var nullInit = "new SqlParameter(\"" + parameter.EsqlParameterName + "\", typeof(" + parameter.RawClrTypeName + "))";
    #>
            var <#=parameter.LocalVariableName#> = <#=isNotNull#> ?
                <#=notNullInit#> :
                <#=nullInit#>;

    <#+
            }

            var genericArg = returnType == null ? "" : "<" + MultiSchemaEscape(returnType) + ">";
            var callParams = Code.StringBefore(", ", String.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray()));
            var spParams = Code.StringBefore("@", String.Join(", @", parameters.Select(p => p.EsqlParameterName).ToArray()));

            if (includeMergeOption)
            {
                callParams = ", mergeOption" + callParams;
            }
    #>
            return ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreQuery<#=genericArg#>("<#=edmFunction.Name#> <#=spParams#>"
                        <#=callParams#>);
        }
    <#+
        if(!includeMergeOption && returnType != null && returnType.EdmType.BuiltInTypeKind == BuiltInTypeKind.EntityType)
        {
            WriteFunctionImport(edmFunction, true);
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实体框架 EF4.1 - 存储过程“在容器中找不到” 的相关文章

  • C中函数指针的递归声明

    我想声明一个返回指向相同类型函数的指针的函数 我想用它来实现如下状态机 typedef event handler t event handler t event t compilation error event handler t st
  • is_integral 与 is_integer:其中之一是多余的吗?

    是积分 http en cppreference com w cpp types is integral and 是整数 http en cppreference com w cpp types numeric limits is inte
  • 如何将不记名令牌发送到 ASP NET MVC 5 中的视图?

    我有一个 NET MVC and WEB API项目 我想打电话给WEB API controllers来自 javascript 但我没有找到将令牌发送到我的视图的方法 我想添加bearer token in Viewbag变量 使用以下
  • 可变数量的(常量)引用参数

    我试图从我的高级代码 使用 C 11 中消除原始指针 并且我找到了引用 尤其是const 在许多情况下 当没有所有权转移时 是一个很好的替代品 但如果有的话该怎么办variable我想通过 常量 引用传递的参数数量 你不能创建一个std v
  • 在目标 VS 安装时,VSIX 扩展内部使用的 WPF-Log4Net 未输出日志

    当 Log4net 在 VSIX 扩展中使用并安装在另一个目标 VS 上时 它不会记录日志 我有一个 WPF 解决方案 我下载了 log4net dll 添加了 log4net config 并将 复制到输出目录 值设置为 始终复制 log
  • 修剪 UIImage 边框

    这是我想要修剪的图像的示例 我想去掉图像周围的边框 在本例中是顶部和底部的黑条 我在Github上找到了一个库 CKImageAdditions https github com cmkilger CKImageAdditions 但是它似
  • 为什么我不能从对中返回 unique_ptr?

    为什么我不能从对中返回 unique ptr include
  • 如何删除实体框架6中的多对多关系

    如果将项目连接为多对多关系 则从数据库中删除项目时会出现问题 我的数据库看起来像 Project lt JobInProject gt Job ProjectID JobInProjectID JobID ProjectID JobID 主
  • 修改正在运行的可执行文件的资源内容

    All 我将应用程序设置存储在资源中 当我的程序首次加载时 我使用 WinAPI 读取指定的资源 然后我解析检索到的字节数据 这对我来说完美无缺 现在假设用户更改了我的应用程序中的设置 他 她检查复选框控件 我想将更新的设置保存到我的资源中
  • 为什么这个单独的定义会导致错误?

    挑战 我有这段代码无法编译 你能找出问题所在吗 有一次让我很头疼 header namespace values extern std string address extern int port cpp file std string v
  • 将授权标头添加到 Web 参考

    我正在尝试向客户端的网络服务发出请求 我不知道客户端的底层平台 我使用 添加 Web 引用 在 Visual Studio 2010 中使用了客户端的 WSDL 并生成了我的代理类 称为 ContactService 我现在需要将如下所示的
  • 我可以对(非成员)函数使用部分模板特化吗?

    我试图在 非成员 函数上使用部分模板专业化 但我在语法上遇到了问题 我在 StackOverflow 中搜索了其他部分模板专业化问题 但这些问题涉及类或成员函数模板的部分专业化 作为起点 我有 struct RGBA RGBA uint8
  • 为什么未到达的 try-catch 块会增加运行时间?

    我目前正在创建自己的容器库 但我已经看到无法访问 if 语句无效 try catch阻止增加运行时间 这是我的测试 Vector cpp template
  • 为什么必须通过 this 指针访问模板基类成员?

    如果下面的类不是模板 我可以简单地拥有x in the derived班级 但是 通过下面的代码 我have to use this gt x Why template
  • 使用 _Alignas 进行结构成员对齐

    我想知道以下问题 是新的吗 Alignas结盟 C11 中的说明符适用于结构成员吗 我一直假设这么多 但彻底阅读了 N1570 公开草案似乎表明对齐说明符不能 出现在一个说明符限定符列表 这就是我所期望的 如果得到支持的话 我已经读过几遍语
  • C++ 联合数组和变量?

    在C 中没有办法做这样的事情吗 union Scalar x y Scalar v 2 Where x v 0 and y v 1 既然您使用的是 C 而不是 C 并且它们具有相同的类型 为什么不直接将 x 设为对 v 0 的引用 将 y
  • 返回 ICollection 而不是 List 的真正优势是什么? [复制]

    这个问题在这里已经有答案了 我读过几篇博客文章 提到对于公共 API 我们应该始终返回 ICollection 或 IEnumerable 而不是 List 返回 ICollection 而不是 List 的真正优势是什么 Thanks 复
  • 是否可以编写一个在另一个 Windows 应用程序中选择文本时收到通知的 Windows 应用程序?

    我很好奇是否可以编写一个程序来监视我的文本选择 一种可能的用途是编写一个与编辑器 IDE 无关的代码格式化程序 应用程序 服务 P 启动并以某种方式挂接到窗口中 以便在任何窗口中选择文本时收到通知 启动其他一些应用程序 A 用户选择 A 中
  • char[length]初始化并处理

    我定义了一个字符数组 char d 6 如果我在以下方面有误 请纠正我 此时没有为变量分配内存d 现在我要初始化它 d aaaaa 这种初始化之后 就不需要释放内存了 它将自动完成 我怎么知道是否char 被初始化了吗 我正在寻找类似的模式
  • 如何使用 Ioc Unity 注入依赖属性

    我有以下课程 public interface IServiceA string MethodA1 public interface IServiceB string MethodB1 public class ServiceA IServ

随机推荐

  • 是否可以在 Google Chrome 扩展程序中确定选项卡的打开方式?

    我正在寻找一种方法来确定 Google Chrome 扩展程序中给定选项卡的开启器 父选项卡 我查看了 Tab 的文档 但似乎没有任何内容可以产生此信息 http code google com chrome extensions tabs
  • (Windows) 同时打开同一文件

    我正在尝试在 Windows 中打开一个文件以同时进行写入和读取 我有一个程序 每一秒 写入文件和一个从文件读取的程序 在unix中它可以完美工作 但在windows中不起作用 我无法打开已经打开的文件 我用 fopen 打开文件 我怎么解
  • 使用 IdentityServer4 保护 Web API 2.2

    我有 Web API 2 2 它使用 Net 4 5 2 框架 该框架由 angular2 应用程序使用 并且存在现有的 IdentityServer4 实现 我想使用 IdentityServer4 保护我的 Web API 我的问题是我
  • Volley - 直接下载到文件(内存中没有字节数组)

    我在 Android 项目中使用 Volley 作为我的网络堆栈 我的部分要求是下载可能非常大的文件并将其保存在文件系统上 我一直在研究 volley 的实现 似乎 volley 工作的唯一方式是将整个文件下载到一个可能很大的字节数组中 然
  • 当高度改变时,Chrome 不会重新计算宽度

    我有一个包含链接和图像的缩略图列表 因此当用户将鼠标悬停在li元素 它的高度变成100 但是它起作用的问题wrong由于某些奇怪的原因 在 Chrome 中 我不明白为什么在 Chrome 中悬停li宽度不会调整为 新 尺寸 注意 这是我的
  • CSS 中的 rem 和 em 有何不同?

    在网站源代码中 我有时看到开发人员使用rem单元 是否类似于em 我尝试看看它实际上做了什么 但它与什么相关 Demo HTML div Hello p World p div CSS div font size 1 4rem div p
  • Android NDK 构建 - 包括 LOCAL_SHARED_LIBRARIES?

    我在 Android NDK 下构建项目时遇到问题 最有可能的是由于未包含正确的共享 静态库 我添加了 lsomeLib 但 LOCAL SHARED LIBRARIES 似乎没有被包含在内 我的 Android mk 包含以下内容 LOC
  • 为什么这个 ptrace 程序说 syscall returned -38?

    它是一样的this one除了我正在跑步execl bin ls ls NULL 结果显然是错误的 因为每个系统调用都返回 38 user test test trace syscall 59 called with rdi 0 rsi 0
  • 如何创建一个在应用程序运行时始终运行的线程

    编辑 我现在确定问题与while true 循环保存所有其他命令 正如我已注释掉的那样 并且应用程序部署时没有附加的异常 我不确定它有多重要 但我的ServletContextListener实现看起来像这样 public class Bi
  • 迭代计算任意数量的集合的笛卡尔积

    我想计算任意数量的笛卡尔积nonempty在 Java 中设置 我已经写了迭代代码 public static
  • 如何从 netBeans 平台的菜单中删除项目?

    我有模块应用程序 当我运行它时 该应用程序的主窗口有相当复杂的菜单 如何从菜单中删除某些项目 您可以通过向项目的layer xml 文件添加条目来从菜单栏中删除菜单项 你应该通读 NetBeans 平台 HTML 编辑器 教程中的 调整用户
  • “$”的密钥代码是什么?

    我试图禁止在文本输入中输入所有其他字符 Since to get the you have to press the shift key and the 4 key I am not sure how you would get the k
  • R:从 h2o.randomForest() 和 h2o.gbm() 绘制树

    寻找一种有效的方法来在 rstudio H2O 的 Flow 或 h2o 的 RF 和 GBM 模型的本地 html 页面中绘制树木 类似于下面链接中的图像 具体来说 如何为下面的代码 可能通过解析 h2o download pojo rf
  • 将带有千位(和小数)分隔符的字符串转换为双精度

    用户可以输入double进入文本框 数字可能包含千位分隔符 我想在将输入的数字插入数据库之前验证用户输入 是否有一个 C 函数可以转换此类输入 1 555 99 into double 如果有 如果输入无效 它是否会发出错误信号 我不想以类
  • 按组划分的观察数量[重复]

    这个问题在这里已经有答案了 在 R 中 我有一个数据框 其中的观察结果由多个值描述 其中一个值是一个因子 我已按此因素对数据集进行排序 并希望添加一列 在其中我将获得该因素每个级别的大量观察结果 例如 factor obsnum a 1 a
  • ICE03:字符串溢出(大于列中允许的长度);表:自定义操作

    我收到以下代码的 ICE03 字符串溢出警告
  • 使用“.”的 Bash 脚本属性文件在变量名中

    我是 bash 脚本编写新手 对在 bash 脚本中使用 properties 文件中的属性有疑问 我见过一个 bash 属性文件使用 变量名之间 例如 this prop one someProperty 我已经看到它们是从脚本中调用的
  • 如何以编程方式添加 UITabBarController(无 xib 文件或情节提要)

    我想添加一个UITabBarController到我的应用程序 但我只能用代码来完成 没有 xib 文件或故事板 如何完全通过代码来做到这一点 EDIT tbc UITabBarController alloc init aboutUsVi
  • Global.asax 未处理的异常

    我正在通过电子邮件发送来自 global asax 的未处理异常详细信息 如何获取未处理异常的 aspx 文件或程序集文件的路径和 或文件名 当我开发和测试时 此信息显示在异常的堆栈跟踪中 当我将 global asax 部署到生产环境时
  • 实体框架 EF4.1 - 存储过程“在容器中找不到”

    我的数据库中有一个 SP 对于 EF4 1 使用数据库上下文API 从数据模型导入函数后 对存储过程的引用在我的开发环境中工作正常 但是 当发布到服务器时 它会失败并显示类似消息 在容器 TallyJ2Entities 中找不到 Funct