实体框架 - 循环浏览属性以进行更新

Eth*_*wne 3 .net c# asp.net entity-framework properties

我试图找到一种方法来循环EF对象的属性并更新这些属性的值.更具体地说,我有50个字段,最多由50个下拉列表填充.所有50个可能需要或可能不需要填充.

为了解决这个问题,我有一个转发器,最多可以创建50个DDL.用户将为每个值选择值,然后按更新按钮.我正在遍历转发器中的项目,并可以计算我在转发器中的迭代次数.我还想使用此计数来了解我需要更新的字段.例如,DDL1 = FIELD1,DDL2 = FIELD2,....).

这是我想要做的一个例子:

using (Data.Entities dataContext = new Data.Entities)
{
    var efObject = dataContext.EFData.Where(c => c.ID = [SOMEID]).First();

    int posCount = 0;
    foreach (RepeaterItem rep1 in repeaterControl.Items)
    {
        DropDownList ddlControl= (DropDownList)rep1.FindControl("ddlControl");

        //Here is where I need to update a field
        //Something like:  efObject.Field# = ddlControl.SelectedValue;
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法动态创建我需要更新的属性名称?

我可以通过索引访问一些属性集合吗?

这甚至与我应该如何处理这个问题的距离很近?

任何和所有的帮助将不胜感激.谢谢.

Ale*_*Aza 11

你可以这样做.

var properties = typeof(EFType).GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var property in properties)
{
    var control = (DropDownList)rep1.FindControl("ddlControl" + property.Name);
    property.SetValue(efObject, control.SelectedValue, null);
}
Run Code Online (Sandbox Code Playgroud)

SelectedValue是字符串.因此,如果需要,您需要处理类型转换.