0

我创建了一个存储过程,它将返回一组数据。就我而言,它是一组角色

CREATE PROCEDURE [dbo].[GetRoles]
@ID Int
AS
SELECT Roles.Role FROM Roles WHERE Roles.CustomerCustomerID=@customerID
RETURN 0

我正在使用实体框架将此值获取到如下变量:

var query = context.GetRoles(ID);

我打算操纵这个dataset并创建一个list“角色”并返回list

但是由于我正在调用存储过程并且我没有在这里编写查询语句,例如:

using (AdventureWorksEntities context = new AdventureWorksEntities())
{
    string LastName = "Zhou";
    var query = from contact in context.Contacts 
                where contact.LastName == LastName 
                select contact;

    // Iterate through the collection of Contact items.
    foreach( var result in query)
    {
        Console.WriteLine("Contact First Name: {0}; Last Name: {1}", 
                result.FirstName, result.LastName);
    }
}

如何获得每个结果中的值?

我显然无法在智能感知中访问表的字段

在这个问题上我应该采取什么方法?

提前致谢..

4

1 回答 1

3

您需要在 EDMX 模型中创建 FunctionImport,并将列映射到实体或复杂类型。为此,请右键单击 EDMX,选择添加/函数导入,然后从列表中选择存储过程(如果没有,请从数据库中刷新模型)。给 FunctionImport 一个名称(例如:“GetRoles”)并选择它返回的内容(在您的示例中,是 Roles.Role 类型的标量集合。

然后

var query = context.GetRoles(ID); 

将返回一个ObjectSet<T>,其中 T 是您已将其映射到的类型,您可以对其进行迭代。

于 2012-07-25T09:45:31.903 回答