2012-04-24 2 views
0

Мне нужно выбрать Entity Objects на основе имени элементов управления страницы.Entity Framework - Reflection

Есть два сценария, где мне нужно получить доступ к лицам, на основании строки (я динамически выбирать эти на основе имен пользовательских элементов управления, расположенных на странице:

Пример 1) - Здесь я хотел бы как-то измените db.PersonalDetails на подстановку строк, где db.PersonalDetails является переменной.

EntityObject obj = null; 
obj = (from q in db.PersonalDetails where q.AppFormId==FormApplicationId select q).SingleOrDefault(); 

Пример 2) Здесь я хотел бы динамически установить тип возвращаемого значения, в данном случае это PersonalDetail, но я хотел бы быть в состоянии установить это динамически. Я могу использовать отражение, чтобы получить тип, но я не могу сказать «как obj.GetType()» как ошибки.

EntityObject obj = null; 
obj = returnUpdatedObj(obj) as PersonalDetail; 

Любая помощь будет очень признательна. Я отчаянно хочу найти решение этого, поэтому, если для объяснения проблемы требуется какая-либо дополнительная информация, пожалуйста, дайте мне знать.

+0

Это слишком абстрактное, чтобы даже начать говорить что-нибудь осмысленное. Покажите код, где вам нужна помощь. –

+0

"как obj.GetType()" не имеет смысла. «as» is (sort), используемый для изменения статического типа - тип, о котором компилятор знает. «obj.GetType()» определяет динамический тип, и компилятор не может знать об этом, потому что нет obj, пока вы фактически не запустите код, и вам не нужно использовать для изменения динамического типа: он уже что вы пытаетесь сделать. Я не понимаю, что вы пытаетесь сделать. – hvd

+0

Что я пытаюсь сделать: У меня есть XML-файл, содержащий список элементов управления, которые должны отображаться на странице. Каждый из элементов управления загружается динамически во время выполнения, так как число и тип элементов управления можно динамически изменять. Каждое из имен элементов управления совпадает с таблицей SQL Server с тем же именем, и каждое имя поля управления соответствует столбцу в таблице. Итак, когда форма отправляется, я просматриваю элементы управления и выбираю сущность/с, к которой они относятся, а затем используя отражение, я запускаю поля ввода управления и обновляю поля сущности. –

ответ

0

Для 1) вы могли бы сделать что-то вроде я здесь, в блоге this. Сделать дерево expresion и использовать это дерево выражения в

context.Set<T>.Where(expression); 

Для 2), похоже, что вам нужна обобщенная функция:

private static T DoSomething<T>(T obj) 
    { 
     return obj; 
    } 
Смежные вопросы