当我针对DBContext运行RawSqlQuery以从MySql数据库获取列表对象时,不会在数据库中返回其实际值的对象。列表中的所有对象在查询后都具有所有属性的默认值。
代码:
using (var dbContext=new PartnerEntities())
{
string sql = $@"select idcall,starttime from cdr limit 0,100";
List<KeyValuePair<long,DateTime>> rowIdVsDates =
dbContext.Database.SqlQuery<KeyValuePair<long,DateTime>>(sql).ToList();
}
检索结果:
Results from debug:
原始数据:
idcall,starttime
1,&#39; 2017-12-01 22:56:38&#39;
2,&#39; 2017-12-01 22:56:33&#39;
3,&#39; 2017-12-01 22:56:44&#39;
4,&#39; 2017-12-01 22:56:14&#39;
5,&#39; 2017-12-01 22:56:49&#39;
6,&#39; 2017-12-01 22:56:34&#39;
7,&#39; 2017-12-01 22:56:41&#39;
8,&#39; 2017-12-01 22:56:25&#39;
9,&#39; 2017-12-01 22:56:39&#39;
根据EF文档,我想要实现的目标应该是可行的。 EF Documentation from MSDN
从链接:
可以使用Database类上的SqlQuery方法创建返回任何类型的实例的SQL查询,包括基本类型。 例如:using(var context = new BloggingContext()){ var blogNames = context.Database.SqlQuery( &#34; SELECT name FROM dbo.Blogs&#34;)。ToList(); }
我正在使用EntityFramework 6.1.3和C#,MySql 5.6 for windows,connector .net 6.9.8。我将EF更新到6.2.0(最新),但这并没有解决问题。
我们将不胜感激。
答案 0 :(得分:1)
KeyValue对类型不正确。它匹配属性名称。您应该使用自定义类型。例如:
编辑:更改了与您的用例匹配的类型
public class MyDto
{
public int IdCall { get; set; }
public DateTime StartTime { get; set; }
}
然后您的查询将如下所示:
var rowIdVsDates = dbContext.Database.SqlQuery<MyDto>(sql).ToList();