Entity Framework - просмотр свойств для обновления - PullRequest
3 голосов
/ 06 июня 2011

Я пытаюсь найти способ перебрать свойства объекта 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;
    }
}

Есть ли способ динамически создать имя свойства, которое мне нужно обновить?

Есть ли коллекция свойств, к которой я могу получить доступ по индексу?

Это даже отдаленно близко к тому, как я должен идти об этом?

Любая помощь будет высоко ценится. Спасибо.

1 Ответ

11 голосов
/ 06 июня 2011

Вы могли бы сделать что-то вроде этого.

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 является строкой. Поэтому вам нужно позаботиться о преобразовании типов, если это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...