【发布时间】:2018-03-28 03:33:48
【问题描述】:
我几乎到处寻找,但我很难找到解决方案。我花了一周的时间使用存储过程创建了一个极其复杂的计算查询,我想从这个查询中获取结果并将其放入 POCO 类中,类似于我在使用 EF 6 之前所做的。
Map Stored Procedure Column names to POCO DTO
基本上是这样的:
var p1 = new SqlParameter { ParameterName = "Param1", Value = 1 };
var p2 = new SqlParameter { ParameterName = "Param2", Value = 2 };
string query = "EXEC Calcs_Selections @Param1, @Param2";
var calcs = context.Database.SqlQuery<CalcViewPOCO>(query, p1, p2).ToList();
我读过这里的文献:
Raw SQL Query without DbSet - Entity Framework Core
并发现 EF Core 中不再有“免费 sql”。 FromSQL 基本上将结果投影到数据库中找到的真实实体中,我不想要它,因为我没有找到相同列的表。相反,一种解决方案是扩展 DBContext,并创建一个新的 DBSet
但我真的不知道该怎么做。我有一个数据库优先模型,并使用了 Scaffold-DbContext:
Getting Started with EF Core on ASP.NET Core with an Existing Database
我不想添加到自动创建的上下文中,在我的例子中是 ProjectAContext,因为如果我对数据库进行更多更改并再次运行脚手架,它将覆盖我的更改。
【问题讨论】:
-
或许你应该等待 EF Core 2.1 Query Types
标签: stored-procedures asp.net-core ef-core-2.0