Как лучше всего передать список (т.е. общий список) в хранимую процедуру, используя Entity Framework.
Текущее решение, которое я использую, преобразует список в DataTable
и затем передается в хранимую процедуру.
Код, показанный ниже, используется для преобразования общего списка в таблицу данных, но для обработки около 100000 записей объекта с 6 свойствами потребовалось около 10 секунд.
public static DataTable ToDataTable<T>(List<T> iList)
{
DataTable dataTable = new DataTable();
PropertyDescriptorCollection propertyDescriptorCollection =
TypeDescriptor.GetProperties(typeof(T));
for (int i = 0; i < propertyDescriptorCollection.Count; i++)
{
PropertyDescriptor propertyDescriptor = propertyDescriptorCollection[i];
Type type = propertyDescriptor.PropertyType;
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
type = Nullable.GetUnderlyingType(type);
dataTable.Columns.Add(propertyDescriptor.Name, type);
}
object[] values = new object[propertyDescriptorCollection.Count];
foreach (T iListItem in iList)
{
for (int i = 0; i < values.Length; i++)
{
values[i] = propertyDescriptorCollection[i].GetValue(iListItem);
}
dataTable.Rows.Add(values);
}
return dataTable;
}
Мне нужен лучший способ передать список значений хранимой процедуре, используя меньше времени.