The trick here is to cast the Connection property of the ObjectContext to the type System.Data.EntityClient.EntityConnection. Then you can access the StoreConnection property:

01.``var dataTable = ``new DataTable

02.`` ``{

03.`` ``Columns = { ``new DataColumn(``"Value"``, ``typeof``(``string``)) }

04.`` ``};

05.``dataTable.Rows.Add(``"first row"``);

06.``dataTable.Rows.Add(``"second row"``);

07.``dataTable.Rows.Add(``"third row"``);

08.

09.``//

10.``// EF does not support table-valued parameters, so we'll do it ourselves

11.``//

12.``using (var ctx = ``new MyObjectContext())

13.``using (var cn = ``new SqlConnection(((System.Data.EntityClient.EntityConnection)ctx.Connection).StoreConnection.ConnectionString))

14.``using (var cmd = cn.CreateCommand())

15.``{

16.`` ``cmd.CommandText = ``"SomeRealyCoolStoredProcedure"``;

17.`` ``cmd.CommandType = CommandType.StoredProcedure;

18.

19.`` ``cmd.Parameters.AddWithValue(``"ID"``, 123456);

20.`` ``cmd.Parameters.AddWithValue(``"ValuesTable"``, dt).TypeName = ``"MyTableType"``;

21.

22.`` ``cn.Open();

23.`` ``cmd.ExecuteNonQuery();

24.``}