我正在学习POCO,虽然我喜欢很多概念,但我认为我并没有得到它。
我遇到如下问题:
我有一个sproc,它会针对这些列返回多个列和值,这些列根据特定条件在sproc内部动态构建。
例如根据输入,下面的结果之一应该返回,
1)
Id -- Name -- Age
1 Peter 25
2 Janit 53
2)
Id -- Provider Name -- Provider Type
5 C. A hospital
我无法为这些动态列创建类,因此我使用动态对象和POCO DB获取记录。
List<dynamic> list = db.fetch<dynamic>(sql);
当其他人用不同的参数调用该函数时会出现问题,然后结果保留POCO的第一次调用的列信息,并且得到欲望的结果。
Id -- Name -- Age
5 C. A hospital
这种差异导致运行时错误。
你能帮我解决这个问题吗? 或者我如何为这种场景定义类?
希望我详细解释我的问题。
答案 0 :(得分:0)
您可以定义POCO类以获取结果。我用了很多。 PetaPoco将仅填写SP返回的字段。
答案 1 :(得分:0)
创建一个POCO,其中包含您希望以下列方式从动态SP返回的所有列:
public class PocoName
{
public int Id {get; set;}
public string Name {get; set;}
public int Age {get; set;}
public string ProviderName {get; set;}
public string ProviderType {get; set;}
...
}
然后按如下方式调用该函数:
List<PocoName> list = db.fetch<PocoName>(sql);
每次使用不同的输入参数运行sproc时,只会在您的POCO中填充由sproc返回的列。
答案 2 :(得分:0)
尽管这是3岁的帖子,但最近我遇到了类似的问题。希望该解决方法能对以后遇到此问题的人有所帮助。
谢谢