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





Если вы используете EF, почему бы не использовать Database.ExecuteSqlCommand()? Он находится в пространстве имен System.Data.Entity.
Например:
int result = db.Database.ExecuteSqlCommand("Non SELECT SQL etc...");
Я не понимаю, что ты хочешь делать. Использование SQL с ручным управлением не очень хорошо сочетается с материализацией сущностей (потому что они не являются сущностями ...). Вы могли бы создавать динамические запросы LINQ и выполнять их?
Идея состоит в том, чтобы иметь механизм для управления запросом без изменения кода. Таким образом, запросы должны находиться в файле конфигурации, поэтому запросы LINQ не подходят, поскольку они потребуют изменения кода в любое время, когда вам нужно будет изменить запрос.
Думаю, тогда это то, что вам нужно: stackoverflow.com/questions/26749429/…
На основе комментария в следующем сообщении, которое вы упомянули: «Решения подходят лучше всего, если запрос на выборку должен извлекать из одной таблицы и одного объекта. Можем ли мы импровизировать это, чтобы реализовать запрос выбора с помощью JOINS, где у нас будет несколько таблиц и нужно привязать к разным TypeBuilders. Мысли? ". Мне это тоже не подходит, так как у меня есть запрос, который соединяется с несколькими объектами.
Насколько я понимаю код, он динамически создает тип на основе возвращаемых столбцов. Если вы вернете плоскую строку, она должна работать независимо от того, как вы ее получили (через соединения и т. д.). Возвращая дочерние наборы результатов, вам может потребоваться изменить код, чтобы сгенерировать правильный динамический тип для этого. Попробуйте и задайте еще один вопрос, если у вас возникнут проблемы?
Что ж, в итоге я реализовал механизм с использованием отражения, который в основном получает группу полей для выбора и создает динамические объекты с этими полями, поэтому при применении запроса с объединениями между объектами будут отображаться только поля, которые я ищу.
Итак, учитывая Entity1, Entity2, Entity3 со следующими отношениями
<b>Entity1</b>{
<br/> Entity1Name, <br/> List<*Entity2*> Entity2Items, <br/> etc..
<br/>}
а также
<b>Entity2</b> { <br/> Entity2Name, <br/> List<*Entity3*> Entity3Items <br/>}
Я могу хранить, например, следующий запрос в файле конфигурации и получите информацию:
"Entity1.Entity1Name", <br/>
"Entity1.Entity2Items.Entity2Name", <br/>
"Entity1.Entity2Items.Entity3Items.Entity3Name"
В любом случае, я просто пытался увидеть, есть ли какое-нибудь готовое решение, которое потребовало бы минимальных изменений кода.
Спасибо.
SqlCommand позволяет выполнять команды для БД. Я не хочу этого делать. Я хочу выполнить запрос и получить результаты, поэтому я бы сказал, что SqlCommand не является допустимым вариантом. Кроме того, я хочу получить в результате объекты, которые я запрашиваю, а не средство чтения данных с данными в плоском режиме.