我正在使用Entity Framework,我的表结构如下所示。
Key,dec2000,dec2001,dec2002,... dec2020
所以,在循环更新时,如果i中的所有列都必须指定列名,如
for (int j = 0; j < intEndYear - intStartYear; j++)
{
// Find value from FormCollection
// Assign it to object
OBJECT.DEC2000 = 1;
}
所以,一种方法是我必须检查年份并进行条件检查是否年份= 2000然后使用dec2000字段等等。
所以我尝试使用动态类型,所以我可以像
一样动态指定字段名称dynamic objLevel = objDetailSum.GetSingle(parameters);
所以,在更新时我想尝试做
// trying to make field name
string stryear = "DEC" + year.ToString();
objLevel.stryear = 1; // should read objLevel.dec2000 = 1;
我知道这不会起作用,因为我的桌子上没有strYear专栏。
问题:还有其他好方法可以解决这种情况吗?所以我不必检查每一列,而是可以使用动态代替/.
欣赏任何方向。
答案 0 :(得分:2)
您可以使用Reflection。有关详细信息,请参阅here
//assuming "myInstance" is an instance of the EF class:
string strYear = "DEC"+year.ToString();
var pi =myInstance.GetType().GetProperty(styYear);
if (pi!=null)
{
pi.SetValue(MyInstance,1);
}