繁体   English   中英

如何使用Entity Framework 6.1返回dataReader?

[英]How can i return a dataReader using Entity Framework 6.1?

正如问题所要求的那样。 我正在为我的大多数代码使用实体框架,但我还需要执行并返回不在我的实体框架上下文中的sql表中的一个或多个列。

您可以使用Entity Framework运行原始查询 ,例如:

using (var context = new BloggingContext()) 
{ 
    var blogNames = context.Database.SqlQuery<string>( 
                       "SELECT Name FROM dbo.Blogs").ToList(); 
}

如果要返回更复杂的类型,可以定义自己的类并使用它。 只要属性与您选择的列的名称匹配,它就可以工作。 所以让我们上课:

public class MyClass
{
    public int Id { get; set; }
    public string UserName { get; set; }
}

并使用它:

List<MyClass> result = ctx
    .Database.SqlQuery<MyClass>("SELECT Id, UserName FROM dbo.Users")
    .ToList();

IDataReader的重点是通过数据传输数据,因为它通过线路返回(例如TCP / IP),因此不会产生将其全部填充到内存中的开销。 如果你正在处理数百万行,那么将所有内容读入内存是一个坏主意。 如果是这种情况,那么从EF API获取底层连接字符串并使用ADO.NET。 那里也有更好的Aysnc支持。

暂无
暂无

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

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