Я создаю IQueryable<int>
и в зависимости от того, какие критерии выбирает пользователь, псевдоним столбца int в сгенерированном SQL может отличаться. Иногда это имя столбца, и иногда это что-то вроде «C1». Как и мой вопрос здесь, где я спрашиваю How can I get the parameters of an Entity Framework query?, мне интересно, есть ли способ получить сгенерированное имя псевдонима запроса?Как я могу получить псевдонимы столбцов, созданные Entity Framework?
0
A
ответ
0
Это не напрямую Ответьте на мой вопрос, но я только что узнал об удивительном трюке, который позволяет мне переопределить, что такое псевдоним (в SQL Server), и мне пришлось делиться им.
var query = myIQueryable.ToString();
var sql = [email protected]"SELECT x.myAlias
FROM ({query}) x(myAlias)";
Теперь я могу объединить мой супер-комплекс IQueryable с этим небольшим фрагментом SQL, чтобы сделать объемные вставки и обновление операций. Такие, как:
var query = myIQueryable.ToString();
var sql = [email protected]"INSERT INTO dbo.myTable (col1)
SELECT x.myAlias
FROM ({query}) x(myAlias)";
Или
var query = myIQueryable.ToString();
var sql = [email protected]"UPDATE dbo.myTable
SET Col1 = 1
FROM dbo.myTable
JOIN ({query}) x(myAlias) ON x.myAlias = dbo.myTable.SomeColumn";
Конечно, вам все равно придется подключить параметры запроса, которые вы можете получить, следуя примеру, приведенный на мой предыдущий вопрос: How can I get the parameters of an Entity Framework query?