首页 > 代码库 > EF执行SQL语句 结果和直接在Sqlserver中执行结果不一致

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中执行结果不一致