我必须对很多实体进行批量插入,所以我认为最好的方法是使用SqlBulkCopy
类。但是,该类在DataReader
个实例上运行,而我的代码使用IEnumerable,其中T是我的实体类。为了将我的IEnumerable转换为DataReader,我找到了以下代码:LINQ Entity Data Reader。
此代码工作正常,但有一个问题:我的实体类型的枚举属性未包含在datareader中(因此未正确插入)。如何识别枚举类型属性?
答案 0 :(得分:3)
我发现这是因为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;
}
此修改后,枚举类型也将被识别。