我使用FastMember将List<T>转换为Datatable。有些类包含枚举,这在将数据作为TVP传递给存储过程时会造成问题。
public class MyObject
{
public int Id {get; set;}
public SomeEnum EnumHere {get; set;}
}
var dt = new DataTable();
using (var reader = ObjectReader.Create(myObjectsList))
{
dt.Load(reader);
}
db.Execute<ResultObject>("insert_objects", new { dt }, commandType: CommandType.StoredProcedure);FastMember转换列表,但是枚举的列具有DataType of SomeEnum。当将datatable作为TVP传递时,将引发以下异常:
引发的异常:“System.ArgumentException”在Dapper.dll中 附加信息:不支持列'SomeEnum‘的类型。类型为“SomeEnum”
有没有办法强迫FastMember将枚举转换为int?
发布于 2017-02-04 00:49:49
可以创建具有正确属性的匿名类型:
var newObjects = from m in myObjectList
select new { m.Id, EnumHere = (int)m.EnumHere };
var dt = new DataTable();
using (var reader = ObjectReader.Create(newObjects))
{
dt.Load(reader);
}https://stackoverflow.com/questions/41565074
复制相似问题