我试图找到一种方法来遍历 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/