Table-Valued Parameters in Stored Procedure with Entity Framework
I was trying to execute one SQL server 2008 Stored Procedure that is having input parameter as table variable and couldn’t find any way to do this, finally I found that table valued parameter not supported by entity framework till 4.1 version and this is coming soon in next upcoming version. Whereas Table- Valued function supported on version 4.1. Please vote for Table-Valued function to be implemented with Entity Framework next version, below the link to vote for this.
Meanwhile you will have some workaround
- Send common separated string value into Stored Procedure
Here you have to create Split function to call inside your Stored Procedure, see following link to create Split Function
- Send XML String as an input parameter to Stored Procedure
Ex:
string CountryNames = '<ArrayList>
<Values> <Value>India</Value> </Values>
<Values> <Value>Japan</Value> </Values>
<Values> <Value>USA</Value> </Values>
</ArrayList>'
You can use following sub stored procedure to read data from XML
Create procedure [dbo].[GetCountryNames] @xml VARCHAR(MAX) AS BEGIN SET NOCOUNT ON ; DECLARE @hDoc INT EXEC sp_xml_preparedocument @hDoc OUTPUT, @xml SELECT Value FROM OPENXML (@hDoc, '/ArrayList/Values',2) WITH (Value VARCHAR(MAX)) EXEC sp_xml_removedocument @hDoc END |
Table-Valued Function (TVF) is supported in Entity Framework 4.2
- http://blogs.msdn.com/b/efdesign/archive/2011/01/21/table-valued-function-support.aspx
- http://blogs.msdn.com/b/adonet/archive/2011/06/30/walkthrough-table-valued-functions-june-ctp.aspx