Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用存储过程在实体框架中获取数据集合_C#_Sql Server_Entity Framework - Fatal编程技术网

C# 如何使用存储过程在实体框架中获取数据集合

C# 如何使用存储过程在实体框架中获取数据集合,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我创建了一个存储过程,它将返回一组数据。在我的例子中,它是一组角色 CREATE PROCEDURE [dbo].[GetRoles] @ID Int AS SELECT Roles.Role FROM Roles WHERE Roles.CustomerCustomerID=@customerID RETURN 0 我使用实体框架将此值获取到如下变量: var query = context.GetRoles(ID); 我计划操作这个数据集,创建一个列表“角色”,并返回列表 但是因为我调用

我创建了一个存储过程,它将返回一组数据。在我的例子中,它是一组角色

CREATE PROCEDURE [dbo].[GetRoles]
@ID Int
AS
SELECT Roles.Role FROM Roles WHERE Roles.CustomerCustomerID=@customerID
RETURN 0
我使用实体框架将此值获取到如下变量:

var query = context.GetRoles(ID);
我计划操作这个
数据集
,创建一个
列表
“角色”,并返回
列表

但是因为我调用的是存储过程,而不是在这里编写查询语句 例如:

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);
    }
}
如何获得每个结果中的值

显然,我无法在intellisense中访问表的字段

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


提前感谢。

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

然后


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

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

然后


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

请详细说明一下。我已经有了用于访问数据库的数据库上下文。非常感谢Podyluska。我将为其他对此不熟悉的人留下更多的链接。一些其他人在实体框架扩展。但这很好用。msdn.microsoft.com/en-us/library/bb896231.aspx–请详细说明。我已经有了用于访问数据库的数据库上下文。非常感谢Podyluska。我将为其他对此不熟悉的人留下更多链接。其他一些人已经在实体框架W上提出了这一建议ork扩展。但这非常有效。msdn.microsoft.com/en-us/library/bb896231.aspx–
var query = context.GetRoles(ID);