存储过程中的表值参数

时间:2015-09-18 18:13:28

标签: sql-server stored-procedures entity-framework-6 table-valued-parameters

据我所知,没有优雅的方法可以使用表值参数在EF6中调用存储过程。有人可以证实或诋毁我的怀疑吗?

表值类型:

CREATE TYPE MyTestType AS TABLE
(
    ID      INT,
    String  VARCHAR(30)
);

存储过程:

CREATE PROCEDURE MyTestProc
    @TestVar MyTestType READONLY
AS
BEGIN
    SELECT * FROM @TestVar
END

C#EF电话:

var testTable = new DataTable();
testTable.Columns.Add("ID", typeof (int));
testTable.Columns.Add("string", typeof (string));
testTable.Rows.Add(1, "Row1");

var parameter = new SqlParameter("@TestVar", SqlDbType.Structured);
parameter.Value = testTable;
parameter.TypeName = "dbo.MyTestType";

var results = dbContext.Database.SqlQuery<TestObject>("exec dbo.MyTestProc @TestVar", parameter).ToList();

上面的代码正在运行,我想看看是否有更优雅的执行方式。我觉得我应该被允许做像

这样的事情
var results = dbContext.MyTestProc(testTable).ToList();

修改

我遇到过这篇文章,它有一种稍微简洁的处理数据表的方法,但仍然希望用表值参数调用我的存储过程更简洁。

Code.msdn - Stored Procedure with Table-Valued Parameter in EF and ASP.NET MVC

0 个答案:

没有答案