【问题标题】:Entity Framework - Loop through properties for update实体框架 - 循环通过属性进行更新
【发布时间】:2011-09-09 00:03:27
【问题描述】:

我正在尝试找到一种方法来循环遍历 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;
    }
}

有什么方法可以动态创建我需要更新的属性名吗?

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

这是否与我应该如何处理这件事很接近?

我们将不胜感激任何和所有的帮助。谢谢。

【问题讨论】:

    标签: c# .net asp.net entity-framework properties


    【解决方案1】:

    你可以这样做。

    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 是字符串。因此,如果需要,您需要处理类型转换。

    【讨论】:

    • 完美。这正是我所需要的。只需 1 个注释,必须为 SetValue 方法的第三个参数添加一个空值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-02
    • 2011-11-03
    • 1970-01-01
    相关资源
    最近更新 更多