DbContext.Database.SqlQuery <keyvaluepair <int,string =“”>&gt;(&#34; exec mySproc&#34;)not mapping </keyvaluepair <int,>

时间:2014-06-10 17:25:17

标签: entity-framework entity-framework-6

我无法弄清楚为什么会这样做

var blah = this.Database.SqlQuery<MyObjectWithTwoStringPropsNamedKeyAndValue>("exec mySproc").ToList();

这并不是

var blah = this.Database.SqlQuery<KeyValuePair<string,string>>("exec mySproc").ToList();

&#34; mySproc&#34;返回三个记录,其中两个varchar列别名&#34; Key&#34;和&#34;价值&#34;。

在第二行代码中,我得到了三个KeyValuePairs的列表,但是列表中的每个项目的两个属性(Key和Value)都为null。

1 个答案:

答案 0 :(得分:3)

这是因为KeyValuePair属性,KeyValue是只读属性。

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

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

  

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