Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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# 如何使用Entity Framework 6.1返回数据读取器?_C#_Asp.net_.net_Entity Framework_Entity Framework 6 - Fatal编程技术网

C# 如何使用Entity Framework 6.1返回数据读取器?

C# 如何使用Entity Framework 6.1返回数据读取器?,c#,asp.net,.net,entity-framework,entity-framework-6,C#,Asp.net,.net,Entity Framework,Entity Framework 6,正如问题所问。我的大部分代码都使用实体框架,但我还需要从不在实体框架上下文中的sql表中执行并返回计数或列。您可以运行使用实体框架,例如: using (var context = new BloggingContext()) { var blogNames = context.Database.SqlQuery<string>( "SELECT Name FROM dbo.Blogs").ToList(); } 并使用

正如问题所问。我的大部分代码都使用实体框架,但我还需要从不在实体框架上下文中的sql表中执行并返回计数或列。

您可以运行使用实体框架,例如:

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

List<MyClass> result = ctx
    .Database.SqlQuery<MyClass>("SELECT Id, UserName FROM dbo.Users")
    .ToList();
列表结果=ctx
.Database.SqlQuery(“从dbo.Users中选择Id、用户名”)
.ToList();

IDataReader的整个要点是在数据通过线路返回时(例如TCP/IP)通过光标浏览数据,因此不会产生将数据全部塞入内存的开销。如果要处理数百万行,那么将所有内容读入内存是个坏主意。如果是这种情况,那么从EF API获取底层连接字符串并利用ADO.NET。还有更好的Aysnc支持

你为什么不简单地在连接字符串中使用
SqlConnection
?你仍然可以使用ADO.NETI我现在已经在ADO.net中使用了SqlConnection,但是我不知道创建一个新的SqlConnection是否正确?或者是否有一种方法可以使用EF连接,就像有一个事务正在运行一样,我想使用它为什么返回EF上下文中不存在的列-为什么不将这些表添加到上下文中?它们是动态表,我不知道它们看起来像什么,但如何返回多个列?所有不同的数据类型?您可以创建自己的非实体类并使用它。检查我的编辑。问题是我无法创建类,因为表是动态的,我在设计时不知道这一点。我在运行时有列名的元数据谢谢David。它非常适合我的情况。
List<MyClass> result = ctx
    .Database.SqlQuery<MyClass>("SELECT Id, UserName FROM dbo.Users")
    .ToList();