使用实体框架使用上下文调用存储过程

时间:2014-07-02 14:17:40

标签: c# sql entity-framework stored-procedures dbcontext

我无法弄清楚我做错了什么我是这个实体框架的新手。我只是试图调用这个简单的存储过程,它返回一个或没有人。

这是我得到的错误:

无法隐式转换类型&System; System.Data.Objects.ObjectResult'到' Model.Person'

存储过程:

Create PROCEDURE [dbo].[GetPersonByID] 
@personID int

AS
BEGIN
    SELECT        PersonID, FirstName, LastName, DOB, Notes,  Reason, Diagnosis, DateEntered
    FROM            Person
    WHERE         PersonID = @personID
END

我更新了我的实体并在此处查看了存储过程。 我还右键单击了我的存储过程并添加了一个函数import并将其绑定到Person Entity。

代码:

private static Person GetPersonByID(int personID)
{
    try
    {
        ModelEntities context = new ModelEntities();

        return context.GetPersonByID(personID);
    }
    catch (Exception ex)
    {
        return null;
    }
}

2 个答案:

答案 0 :(得分:1)

函数GetPersonByID返回ObjectResult类型,您需要将其转换为您的模型。像这样:

var persons = context.GetPersonByID(personID).Select(p => new Model.Person
{
    Name = p.Name,
    Age p.Age,
    ... etc ...
});

return persons.SingleOrDefault();

答案 1 :(得分:0)

似乎SP结果集与您的实体之间存在不匹配。尝试更新与结果集相同的实体,反之亦然。

**如果您也可以提供实体代码,那将非常有帮助。这样我们就可以在我的测试环境中进行测试。