使用用户定义的参数调用存储过程

时间:2014-09-15 10:08:20

标签: c# entity-framework entity-framework-6

是否可以使用参数B调用过程A,参数B是用户定义的表类型?

CREATE PROCEDURE A
(
    @MyTable B READONLY
)
AS
BEGIN
   SELECT * FROM C;
END

CREATE TYPE B AS TABLE 
(
   ID int, 
   PRIMARY KEY (ID)
)

EF-6是我使用的版本。

1 个答案:

答案 0 :(得分:3)

要执行存储过程,您可以使用SqlQuery<T>并传递table-valued parameter,您可以使用DataTable

var dt = new DataTable();
dt.Columns.Add("ID");
dt.Rows.Add(new object[]{ 1 });
dt.Rows.Add(new object[]{ 2 });
dt.Rows.Add(new object[]{ 3 });

var sqlParam = new SqlParameter("MyTable", dt){ TypeName = "B" };
var query = db.Database.SqlQuery<CModel>("A @MyTable", sqlParam);
var cmodels = query.ToList();