EF执行SQL语句 结果和直接在Sqlserver中执行结果不一致

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EF执行SQL语句 结果和直接在Sqlserver中执行结果不一致相关的知识,希望对你有一定的参考价值。

先说问题

直接执行sql的结果技术分享

 

var result = base.Context.Customers.SqlQuery(sql);

 技术分享

技术分享

sql 语句是打断点取得的,连接的也同是一个数据库 ,但是结果不一致

 用SqlDataAdapter把数据取到DataSet 中也是正确的

技术分享

所以可以排除sql 语句有问题

虽然找出了一个解决办法,但是在这里加一个DataSet太丑陋了,虽然规避了问题

然后换了一个EF直接执行sql的方式

 var result = base.Context.Database.SqlQuery(typeof(Customer), sql).GetEnumerator();

这个方法取得的数据就是正常的,只是返回的是一个 DbRawSqlQuery 对象,

GetEnumerator()或者ToListAsync()处理之后才能获得IEnumerable<T>对象

虽然绕过了问题,但是并没有找到发生问题的原因,如果有大神知道还望赐教





以上是关于EF执行SQL语句 结果和直接在Sqlserver中执行结果不一致的主要内容,如果未能解决你的问题,请参考以下文章

EF Core 执行sql语句

.NET Entity Framework(EF)使用SqlQuery直接操作SQL查询语句或者执行过程

在EF中执行SQL语句

我用sqlserver写好了一个存储过程 怎么样才能返回出一个搜索语句的结果集给c#

sql server存储过程如何输出结果集

直接执行sql语句查询很快,在程序中报sql超时。