我需要执行SP,我需要通过SP名称调用SP,并取回对象和返回值。我的问题是我的对象与DB中的多个表有关,我无法用途:Context.ExampleTable.FromSQl(...),因为它只从ExampleTable返回值,但是我需要从3个单独的表中获取字段的对象,以及SP返回值。有人能帮助我吗?我使用的是EntityFrameworkCore 2.2.6
我尝试使用Context.ExampleTable.FromSQl(...),但它不是我需要的。
----编辑----
SqlParameter returnVal = new SqlParameter("@return", SqlDbType.Int);
returnVal.Direction = ParameterDirection.ReturnValue;
using (var context = new Context())
{
var test = context.Set<RequiredObject>().FromSql("EXEC SP_Name @return", returnVal);
}
2条答案
按热度按时间pdsfdshx1#
EF Core 2.2.6不再支持。
但是,您可以定义一个表示结果形状的新类,并将其作为DbSet添加到DbContext中,然后在FromSQL中使用这个新类。
q9yhzks02#
很好的问题!不幸的是,似乎英孚核心没有这种可能性。
尝试了以下操作:
还有这个
两个都失败了...
https://learn.microsoft.com/en-us/ef/core/querying/sql-queries "SQL查询不能包含相关数据。但是,在许多情况下,您可以使用Include运算符在查询之上合成以返回相关数据(请参阅包括相关数据)。"
你肯定可以做什么(我相信这不是最好的方式,可能有人会建议选择更好):在应用程序中额外安装一些微型ORM(例如Dapper),共享相同的数据库连接字符串,在这种罕见情况下,当必须通过纯SQL查询多个相关实体时-不使用EF,而使用此ORM