c# - Entity Framework - 循环遍历属性以进行更新

标签 c# .net 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;
    }
}

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

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

这是否与我应该如何处理这件事相去甚远?

我们将不胜感激任何帮助。谢谢。

最佳答案

你可以这样做。

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

关于c# - Entity Framework - 循环遍历属性以进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6247490/

相关文章:

c# - String.Contains() 比 String.IndexOf() 快吗?

c# - 在 PreRender 中读取脚本标签

javascript - 编写新文本时更改文本框文本的颜色

c# - ASP.NET:上传文件错误 "The given path' s 格式不受支持”

c# - Entity Framework Core - 防止唯一索引上出现多个空值

c#,如何读取xml内部元素

c# - GMT 与 UTC 相同吗?

c# - "Age-Record"数据结构

.NET 序列化类设计问题

.net 在 IE 和 FF 中生成损坏的 jpeg