最后,我可以从使用 EF core 的 .net core 服务调用表值参数存储过程
我创建了假响应域模型
public class MyResponse
{
public int Id { get; set; }
public int Col1{ get; set; }
public int Col2 { get; set; }
}
我称其为假域模型,因为域模型通常是 CLR 类中的表表示,但我在 SQL Server 中没有这样的表。
然后我在 Context 类下添加了属性,如下所示
public class MyQueryDbContext : DbContext
{
public virtual DbSet<MyResponse> Data { get; set; }
.
.
.
}
然后需要为请求参数列表创建数据表,我添加如下
DataTable table = new DataTable();
table.Columns.Add("Id", typeof(int));
table.Columns.Add("Col1", typeof(int));
table.Columns.Add("Col2", typeof(int));
然后我使用 EF 从 .net core API 调用存储过程,并将数据表作为参数传递,如下所示
var parameter = new SqlParameter("@MyRequest", SqlDbType.Structured);
parameter.Value = table;
parameter.TypeName = "[dbo].[MyRequestType]" // My Table valued user defined type
var response=_context.Data
.FromSql("EXEC [dbo].[GetMyData] @MyRequest", parameter)
.ToList()
您将在响应变量中得到响应。