我有一个存储过程,返回两列而不指定其名称,一个是ID(int),另一个是字符串。我无法更改存储过程,以便它可以使用列名返回结果
如果我让Visual Studio使用.edmx
中的存储过程创建dbContext
文件,它会创建一个新模型类,其中包含两个名为Column1
和Column2
的属性。问题是,当我运行它时,我收到以下错误:
数据读取器与指定的'Schema.addCliente_Result'不兼容。类型为“Column1”的成员在数据读取器中没有相应的列具有相同的名称。
有没有其他方法可以将结果映射到dictionary<int,string>
或其他不需要列名的其他内容?
答案 0 :(得分:0)
您可以尝试使用KeyValuePair
。它会保存为密钥指定的值。如果您有更多对,并且想要更轻松地迭代它,则可以创建KeyValuePair
列表。我不确定这对你的情况是否有帮助,对不起,如果没有帮助的话。
答案 1 :(得分:0)
也许您可能想要考虑投影,因为您不希望它映射到模型。投影是指将查询结果输出到与查询结果不同的类型。无论哪种方式,您都可以使用存储过程的结果来创建匿名类型或您自己的类。由于我没有可供参考的代码,我有一个例子如下:
用于存储结果的类
equals()
调用存储过程的代码
public Class Result
{
public int myID {get; set;}
public string myString {get; set;}
}