I have a stored procedure with table valued parameter.
I have to call it from Entity framework in .net core.
I couldn't find any API on context object.
I have tried with ADO.net API's and it worked but now I have to call it from EF in .net core. Stored procedure which I have to call returning result which I have to catch.
My sample SP as below
CREATE PROCEDURE [dbo].[GetMyData]
@MyRequest [dbo].[MyRequestType] Readonly
As
BEGIN
--Its sample SP thats why returned request table as it is
select * from @MyRequest
END
MyRequestType
is User defined table type
its structure is as below
CREATE TYPE [dbo].[MyRequestType] AS TABLE(
[Id] [numeric](22, 8) NULL,
[Col1] [bigint] NULL,
[Col2] [numeric](22, 8) NULL
)
I am using Code first approach in EF core
Any help will be appreciated.
Finally I could able to call Table values parameter Stored procedure from my .net core service which uses EF core
I have created fake Response Domain Model
public class MyResponse
{
public int Id { get; set; }
public int Col1{ get; set; }
public int Col2 { get; set; }
}
I called it Fake Domain Model because Domain model is generally table representation in CLR class but I dont have such Table in SQL Server.
Then I have Added property for this under Context class as below
public class MyQueryDbContext : DbContext
{
public virtual DbSet<MyResponse> Data { get; set; }
.
.
.
}
Then Need to create Data Table for Request parameter list, I have added like below
DataTable table = new DataTable();
table.Columns.Add("Id", typeof(int));
table.Columns.Add("Col1", typeof(int));
table.Columns.Add("Col2", typeof(int));
Then I have called Stored procedure from .net core API using EF and passed datatable as parameter like below
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()
You will get response in you response variable.