Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架-循环更新属性_C#_.net_Asp.net_Entity Framework_Properties - Fatal编程技术网

C# 实体框架-循环更新属性

C# 实体框架-循环更新属性,c#,.net,asp.net,entity-framework,properties,C#,.net,Asp.net,Entity Framework,Properties,我试图找到一种方法来循环遍历EF对象的属性,并更新这些属性的值。更具体地说,我有50个字段,其中最多有50个下拉列表。所有50个可能需要也可能不需要填充 为了解决这个问题,我有一个中继器,可以创建多达50个DDL。用户将选择每个值,然后按下更新按钮。我在中继器中循环遍历项目,并且可以记录我在中继器中的迭代次数。我还想使用此计数来了解需要更新的字段。例如,DDL1=FIELD1,DDL2=FIELD2,…) 下面是我正在尝试做的一个例子: using (Data.Entities dataCont

我试图找到一种方法来循环遍历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;
    }
}
是否有任何方法可以动态创建需要更新的属性名称

是否有可以通过索引访问的属性集合

这和我应该怎么做有点接近吗


我们将非常感谢您的任何帮助。谢谢。

你可以这样做

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

SelectedValue
是字符串。因此,如果需要,您需要注意类型转换。

完美。这正是我需要的。注意,必须为SetValue方法的第三个参数添加一个空值。