Можно ли загружать объекты по строковому имени объекта?

#entity-framework-4

#entity-framework-4

Вопрос:

У меня есть следующий пример кода, который получает список значений из таблицы в БД и привязывает их к списку флажков.

 var db = new DBContext();    
db.Entity1.ToList().ForEach(
x => CheckBoxList1.Items.Add(new ListItem(x.Value, x.ID));
  

У меня есть около 10 подобных списков флажков, и я не хочу повторять код. Я пытаюсь извлечь из него метод и использовать его для всех флажков. Возможно ли загрузить объект по строковому имени? Что-то вроде —

db.Load(«Entity1»).ToList().ForEach…

Таким образом, я могу передать имя объекта и список флажков и выполнить цикл foreach в методе и связать элементы, вот так —

 void BindValues(string entityName, CheckBoxList checkBoxList)
{
    db.Load("Entity1").ToList().ForEach(
    x => checkBoxList.Items.Add(new ListItem(x.Value, x.ID)));
}
  

Спасибо.

Ответ №1:

Сначала в коде DbContext предоставляет метод .Set() или .Set(Type) для получения дескриптора таблицы. Итак, предполагая, что прямой EF предоставляет то же самое, и вы с удовольствием получаете доступ к своим спискам по их типу объекта, а не по строке, это сработало бы для вас.