无法为可组合函数创建函数导入我为我的数据库对象生成了实体代码块,并选择了一些用户定义的标量函数。但是,当我尝试通过双击Model.Store中的函数来导入该函数时,出现此错误。无法为可组合函数创建函数导入。我如何导入我的函数?我不知道我在ExecuteFunction中看到了什么,但它不起作用。在这篇文章和其他回复中显示的文章的帮助下,我终于得到了端到端的解决方案。第一步是将函数放入EDMX文件:第二步是在与EDMX文件相同的命名空间中设置一个类(这很容易通过在与EDMX文件相同的目录中创建类来完成:使用System.Data.Objects.DataClasses;命名空间Same.As.Edmx{publicstaticclassEdmFunctions{[EdmFunction("SurveyDesignerModel.Store","ProcessReplacements")]publicstaticstringProcessReplacements(GuidVersionId,GuidSurveyId,stringInput){thrownewNotSupportedDirectExceptions("arenotsupported.");}}}第三步是编写指向函数的对象查询:usingSystem.Data.Objects;protectedstringProcessReplacements(GuidversionId,GuidsurveyId,stringinput){if(输入==null)返回null;列表参数=newList(3);parameters.Add(newObjectParameter("VersionId",versionId));parameters.Add(newObjectParameter("SurveyId",surveyId));parameters.Add(newObjectParameter("Input",input));varoutput=db.CreateQuery("SurveyDesignerModel.Store.ProcessReplacements(@VersionId,@SurveyId,@Input)",parameters.ToArray()).Execute(MergeOption.NoTracking).FirstOrDefault();返回输出;}对我来说关键是对对象上下文的CreateQuery调用和“查询字符串”的语法请注意对EDMX中定义的函数的完全限定引用,这是我丢失的链接:-)这是正确的。您不能为SQL函数创建函数导入,只能为SQL存储过程创建函数导入。您可以将SQL函数导入商店模型,但您必须手动创建一个方法来调用该函数:){thrownewNotSupportedException("此函数仅用于L2E查询。");}}EdmFunction中的命名空间必须是存储容器的命名空间(EDMX文件中的SSDL),名称必须是导入函数的名称。从.NET代码中调用时,此方法没有任何意义。因此,它抛出异常。它仅适用于转换为SQL=linq-to-entities的查询。我遇到了同样的问题并成功解决了。关于这个主题的原始MSDN文章在这里:Howto:CallaCustomDatabaseFunction以上是C#Tutorial:UnabletoCreateFunctionImportsforComposableFunctions的全部内容分享,如果对大家有用需要了解更多C#Tutorial,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
