Мне нужно сделать пакетную вставку множества сущностей, поэтому я решил, что лучший способ сделать это - использовать класс SqlBulkCopy
. Однако этот класс работает с экземплярами DataReader
, тогда как мой код работает с IEnumerable, где T - это мой класс сущностей. Чтобы преобразовать мой IEnumerable в DataReader, я нашел следующий код: LINQ Entity Data Reader .
Этот код работает нормально, но есть одна проблема: свойства enum для моего типа сущности не включены в хранилище данных (и, следовательно, неправильно вставляются). Как я могу распознать свойства типа enum?
Я узнал, что это связано с тем, IsScalarType
метод IsScalarType
не учитывает перечисления. Это можно легко устранить, изменив метод IsScalarType
следующим образом:
private static bool IsScalarType(Type t)
{
// The || t.IsEnum part is new and makes sure that enums are recognized
return scalarTypes.Contains(t) || t.IsEnum;
}
После этого будет также распознан тип перечисления.