Если вы пытались использовать SQLClient в ядре asp.net, возможно, вы заметили отсутствие DataTables и DataSets, структур таблиц, используемых для ввода-вывода базы данных.
Для выходных данных у нас есть опция SqlDataReader. Но для входных данных мне еще предстоит найти решение этой проблемы - например. если вы хотите передать таблицу в SP по параметру в фреймворке 461, мы используем 'SqlDbType = SqlDbType.Structured и DataTable class'. Любые идеи кто-нибудь?
Библиотека, которую я использую: https://github.com/XML-Travelgate/xtg-data-sqlclient
Решение:
List<SqlDataRecord> datatable = new List<SqlDataRecord>();
SqlMetaData[] sqlMetaData = new SqlMetaData[2];
sqlMetaData[0] = new SqlMetaData("id", SqlDbType.Int);
sqlMetaData[1] = new SqlMetaData("name", SqlDbType.VarChar, 50);
SqlDataRecord row = new SqlDataRecord(sqlMetaData);
row.SetValues(new object[] { 1, "John" });
datatable.Add(row);
row = new SqlDataRecord(sqlMetaData);
row.SetValues(new object[] { 2, "Peter" });
datatable.Add(row);
var task = dbBase.ExecProcedureDataTableWithParamsAsync<object>("VIEWTABLE", new List<SqlParameter>()
{
new SqlParameter()
{
ParameterName = "@paramtable",
SqlDbType = SqlDbType.Structured,
Direction = ParameterDirection.Input,
Value = datatable
}
});
DataTable, DataSet и т.д. теперь можно реализовать с использованием .NET Core 2.0 и Visual Studio 2017 Preview 15.3 +
CREATE TYPE dbo.xxx AS TABLE