![](/img/trans.png)
[英]How to retrieve a value returned from a stored procedure using entity Framework?
[英]How to get specific columns returned by stored procedure in variable/list using Entity Framework Core
我想获取存储过程返回的特定列的列表。在结果集中,两个列名将是通用的,一个列名将是动态的。
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列的每次输出将相同,但基于输入参数的第三列名称将有所不同。
我正在使用Entity Framework Core LINQ在C#中编写以下代码
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 。 但是两者都失败并出现以下错误
'FromSql'操作的结果中没有所需的列'ESText'
ESText指的是我不是从存储过程返回但存在于表中的列。
我只想在c#的结果集中存储少数列,而不是全部。
有人可以帮助我吗?
注意:可以与Select * from LanguageTranslation
查询中的Select * from LanguageTranslation
一起使用
看一下如何执行原始查询。 https://docs.microsoft.com/en-us/ef/core/querying/raw-sql
您可以编写查询以将结果临时存储在临时表中,然后从该表中进行选择。
FromSql需要更多的参数来进行注入,您将需要使用这些额外的参数将其放入查询中。 不要串接。
另一个注意事项:使用ToList或ToArray或Count时,将在服务器上执行查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.