1

我正在使用实体框架,我的表结构如下。

密钥,dec2000,dec2001,dec2002,... dec2020

因此,如果在循环中更新,我必须为所有列指定列名,例如,

for (int j = 0; j < intEndYear - intStartYear; j++)
{
  // Find value from FormCollection
  // Assign it to object
  OBJECT.DEC2000 = 1;
}

所以,一种方法是我必须检查年份并进行条件检查是否 year = 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 列。

问题:有没有其他好的方法来处理这种情况?所以我不必检查每一列,而是可以使用动态/。

欣赏任何方向。

4

1 回答 1

2

你可以使用反射。请参阅此处了解更多信息

//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);
}
于 2013-11-04T16:22:36.023 回答