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

Entity framework LINQ实体数据读取器不支持枚举,entity-framework,enums,sqlbulkcopy,Entity Framework,Enums,Sqlbulkcopy,我必须批量插入很多实体,所以我认为最好的方法是使用类。但是,该类在DataReader实例上运行,而我的代码使用的是IEnumerable,其中T是我的实体类。要将IEnumerable转换为DataReader,我找到了以下代码: 这段代码工作正常,但有一个问题:我的实体类型上的枚举属性未包含在datareader中(因此未正确插入)。如何识别枚举类型属性?我发现这是由于IsScalarType方法没有考虑枚举。通过如下修改IsScalarType方法,可以轻松解决此问题: private s

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


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

我发现这是由于
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;
}

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

为什么不将
IsScalarType
的所有实例替换为
t.IsValueType
,其中
t
是要检查的类型?结构是值类型。结构!=这很好,但还不够,因为它不会将可为空的枚举类型确认为标量类型。我编写了一些代码来解决这个问题,但在大容量插入时仍然失败。我还在调查。