Наконец-то я смог вызвать параметр «Значения таблицы» Хранимую процедуру из своей службы ядра .net, которая использует ядро EF
Я создал поддельную модель домена отклика
public class MyResponse
{
public int Id { get; set; }
public int Col1{ get; set; }
public int Col2 { get; set; }
}
Я назвал ее FakeМодель домена, потому что модель домена, как правило, представляет собой табличное представление в классе CLR, но у меня нет такой таблицы в SQL Server.
Затем я добавил свойство для этого в классе контекста, как показано ниже
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));
Затем я вызвал хранимую процедуру из API ядра .net, используя EF, и передал datatable в качестве параметра, как показано ниже
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()
Вы получите ответ в своей переменной ответа.