ASP.NET MVC中动态类型的动态字段名称

时间:2013-11-04 16:11:07

标签: entity-framework c#-4.0

我正在使用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专栏。

问题:还有其他好方法可以解决这种情况吗?所以我不必检查每一列,而是可以使用动态代替/.

欣赏任何方向。

1 个答案:

答案 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);
}