C# 如何使用Entity Framework 6.1返回数据读取器?
正如问题所问。我的大部分代码都使用实体框架,但我还需要从不在实体框架上下文中的sql表中执行并返回计数或列。您可以运行使用实体框架,例如: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(); } 并使用
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();