繁体   English   中英

如何在存储过程和POCO中使用实体框架

[英]How to use Entity Framework with Stored procedures and POCOs

我在这里尝试将实体框架与存储过程,POCOS和2个不同的项目一起使用。

我有一个项目DataAccess(用于我的edmx和DataContext)和一个项目BusinessEntities(用于我的POCO)。
DataAccess有BusinessEntities的参考。

在我的数据库中,我有一个非常标准的SP:

CREATE STORED PROCEDURE GetHeader
    @id CHAR(35)
AS
BEGIN
    SELECT ID, Name FROM mytable WHERE ID = @id
END

数据上下文为:

public class DbContext : ObjectContext
{
public ObjectResult<BusinessEntities.GetHeaderResult> GetHeader(string id)
{
return base.ExecuteFunction<BusinessEntities.GetHeaderResult>("GetHeader", new ObjectParameter("id", id));
}
}

如果我只是这样去做(EDMX已用SP更新,但功能尚未导入),我将遇到此错误:

System.InvalidOperationException: The FunctionImport &#39;GetHeader&#39; could not be found in the container &#39;DbEntities&#39;.

如果我正确导入函数,则会出现此错误:

System.InvalidOperationException:ExecuteFunction中的类型参数'BusinessEntites.GetHeaderResult'与该函数返回的类型'DbModel.GetHeaderResult'不兼容。

我想这只是这里缺少的简单设置,但我似乎无法抓住它。

请不要让EDMX文件具有正确的设置(CodeGenerationStrategy设置为none,CustomTool为空)

在第一种情况下,您在上下文上调用了错误的方法。 ExecuteFunction仅用于函数导入。 请改用ExecuteStoreQuerySqlParameter 在第二种情况下,函数导入还会在EDMX中创建复杂类型,并且EF期望由于函数导入调用而使用该复杂类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM