LINQ实体数据读取器不支持枚举

时间:2012-11-15 08:02:32

标签: entity-framework enums sqlbulkcopy

我必须对很多实体进行批量插入,所以我认为最好的方法是使用SqlBulkCopy类。但是,该类在DataReader个实例上运行,而我的代码使用IEnumerable,其中T是我的实体类。为了将我的IEnumerable转换为DataReader,我找到了以下代码:LINQ Entity Data Reader

此代码工作正常,但有一个问题:我的实体类型的枚举属性未包含在datareader中(因此未正确插入)。如何识别枚举类型属性?

1 个答案:

答案 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;
}

此修改后,枚举类型也将被识别。