Как получить определенные столбцы, возвращаемые хранимой процедурой в переменную / список, используя Entity Framework Core - PullRequest
0 голосов
/ 23 января 2019

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

ALTER PROC DBO.GETLANGUAGETRANSLATION(@LANGCODE VARCHAR(10))
AS
BEGIN
DECLARE @QUERY NVARCHAR(255)
SET @QUERY= N'SELECT RESOURCENAME,ENText,'+UPPER(@LANGCODE)+' INTO #TEMP FROM DBO.LANGUAGETRANSLATION SELECT * FROM #TEMP';
EXEC(@QUERY);
END

столбцы RESOURCENAME и ENText будут одинаковымив выходных данных каждый раз, но в зависимости от входного параметра имя третьего столбца будет меняться.

Я пишу код ниже в C #, используя Entity Framework Core LINQ

public async Task<IEnumerable<LanguageTranslation>> GetAsync(string langCode)
        {
            var context = new LQMSDbContext(AppConstants.DB_CONNECTION_STRING_KEY);
            try
            {
                string query = "GetLanguageTranslation '" + langCode + "'";
                var result = context.LanguageTranslation.FromSql(query).ToList();
                var result1 = context.Database.ExecuteSqlCommand("GETLANGUAGETRANSLATION @p0", parameters: langCode );
            }
            catch(Exception ex)
            {
                string a = ex.Message;
            }


            return await _dbSet
            .Where(x => x.Equals(langCode))
             .ToListAsync();
        }

Я пытаюсь вызвать хранимую процедуру GETLANGUAGETRANSLATION с использованием двух разных подходов.Но оба сбоев с приведенной ниже ошибкой

Обязательный столбец ESText не присутствовал в результатах операции FromSql

Где ESText ссылается на столбец, которыйЯ не возвращаюсь из хранимой процедуры, но присутствую в таблице.

Я хочу хранить только несколько столбцов в наборе результатов в c # и не все.

Может ли какое-либо тело помочь мне в этом?

ПРИМЕЧАНИЕ: отлично работает с Select * from LanguageTranslation query

1 Ответ

0 голосов
/ 23 января 2019

Посмотрите, как выполнять необработанные запросы. https://docs.microsoft.com/en-us/ef/core/querying/raw-sql

Вы можете написать запрос для временного сохранения результатов во временной таблице, а затем выбрать из этой таблицы.

FromSql принимает больше параметров для вашей инъекции, вы захотите использовать эти дополнительные параметры, чтобы поместить ваши в запрос. Не объединяйте строки.

Еще одно примечание: когда вы используете ToList или ToArray или Count, вы выполняете запрос на сервере.

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