我有多个存储特效,我用来检索各种数据。这些特效返回不同的字段,我想知道是否有一种方法来动态检索字段,类型和数据,所以我可以将它们传递给模型?使用C#,有没有办法从查询中检索所有字段,类型和数据?
using (var dr = SqlHelper.ExecuteReader(
dbConnectionString,
CommandType.Text,
sql,
sqlParams
))
{
while (dr.Read())
{
var Data = new Results
{
Name = (string)dr["Name"],
Value = (double)dr["Value"],
Timestamp = (DateTime)dr["DateTime"]
};
DataItems.Add(Data);
}
}
我正在寻找一种方式来改变,而部分和动态,那里的结果将通过现场,类型和数据设置为结果模型,同时部分。这样我就不必制定具体的案例。该模型设置为采取所有可能的结果,因此只要假设返回的数据将与结果模型一起工作。
这听起来像你正在创建一个自定义ORM的道路,即使你可能还没有意识到这一点。我会后退一步,检查这是否真的是你想要做的事情。你评估过现有的框架,如EF,NHibernate等吗?如果不是为什么?这些都是已经解决的问题,有什么理由可以通过更好的团队重新发明自己(没有冒犯意味,他们比我们大多数人(我也是)在这个领域里更胜一筹,毕竟这是他们的专长)? – Igor
C#中真的没有办法将结果传递给模型,并让模型填充字段吗?而不是列出每个列类型只是传递结果本身? (即var Data = new Results(dr))? –
你要么必须建立通用映射(tranlation)代码翻译数据库结果模型或每个模型(或模型厂)必须要采取一个DataReader或DataRow中,并从数据库填充自身的能力。前几个例子已经在各种ORM中做过无数次了,如果你想要例子,我建议你找一个你喜欢的开源代码,并看看源代码。第二种是重复代码,但每个模型/工厂负责获取适当的字段并将其分配给模型上的相应属性。 – Igor