我无法弄清楚为什么会这样做
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。
答案 0 :(得分:3)
这是因为KeyValuePair
属性,Key
和Value
是只读属性。
Key
和Value
的值只能在构造函数中设置,以后不会更改。
SqlQuery尝试映射存储过程返回的列,但找不到写入它们的属性。文档没有说明属性必须是可写的,但很明显它不会使用参数化构造函数,而是属性。
类型可以是任何类型,其属性与查询返回的列的名称相匹配,也可以是简单的基本类型。