Entity framework DbContext.Database.SqlQuery<;KeyValuePair<;int,string>&燃气轮机;(“exec mySproc”)未映射

Entity framework DbContext.Database.SqlQuery<;KeyValuePair<;int,string>&燃气轮机;(“exec mySproc”)未映射,entity-framework,entity-framework-6,Entity Framework,Entity Framework 6,我不明白为什么会这样 var blah = this.Database.SqlQuery<MyObjectWithTwoStringPropsNamedKeyAndValue>("exec mySproc").ToList(); var blah=this.Database.SqlQuery(“exec mySproc”).ToList(); 但事实并非如此 var blah = this.Database.SqlQuery<KeyValuePair<string,s

我不明白为什么会这样

var blah = this.Database.SqlQuery<MyObjectWithTwoStringPropsNamedKeyAndValue>("exec mySproc").ToList();
var blah=this.Database.SqlQuery(“exec mySproc”).ToList();
但事实并非如此

var blah = this.Database.SqlQuery<KeyValuePair<string,string>>("exec mySproc").ToList();
var blah=this.Database.SqlQuery(“exec mySproc”).ToList();
“mySproc”返回三条记录,其中两个varchar列别名为“Key”和“Value”


在第二行代码中,我得到了一个包含三个KeyValuePair的列表,但是对于列表中的每个项目,这两个属性(Key和Value)都是空的。

这是因为
KeyValuePair
属性、
Key
Value
都是只读属性

的值只能在构造函数中设置,以后不能更改

尝试映射存储过程返回的列,但找不到写入这些列的属性。文档中没有说明属性必须是可写的,但很明显,它不会使用参数化构造函数,而是使用属性

类型可以是属性与查询返回的列的名称匹配的任何类型,也可以是简单的基元类型