使用复杂数据类型在EF中调用存储过程

时间:2012-11-03 18:48:52

标签: c# sql-server asp.net-mvc entity-framework complex-data-types

我不熟悉在Entity Framework示例项目中使用ASP.NET/MVC 3.0 VS2010。我已经导入了两个存储过程作为函数导入,并且为此创建了一个复杂的数据类型。

我正在尝试运行以下c#代码:

public ComplexDataType RunStoredProc()
{
    var context = new DbEntities();
    int param1 = 370;
    int param2 = -1;
    string param3 = "Current";

    ComplexDataType result = new ComplexDataType;
    result = context.StoredProc(param1, param2, param3);
    return result;
}

我收到了错误:

Cannot implicitly convert data type 
    System.Data.Objects.ObjectResult(ComplexDataType) to 'ComplexDataType'

我做错了什么?如何在复杂数据类型中正确存储存储过程的结果?

2 个答案:

答案 0 :(得分:2)

您可以使用DbSet.SqlQuery方法从存储过程中获取结果。

int param1=12;
int param2=53;
var results=context.ComplexDataTypes.SqlQuery.
                       ("dbo.YourSPNameHere @p0 @p1", param1,param2).Single();

假设你有一个这样的集合定义了你的DbContext类。

public DbSet<ComplexDataType> ComplexDataTypes { set;get;}

有更多信息here

答案 1 :(得分:1)

尝试并更改此内容:

result = context.StoredProc(param1, param2, param3);

到此:

result = (ComplexDataType) context.StoredProc(param1, param2, param3);