首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过FastMember自动将枚举转换为int?

如何通过FastMember自动将枚举转换为int?
EN

Stack Overflow用户
提问于 2017-01-10 09:11:56
回答 1查看 770关注 0票数 6

我使用FastMemberList<T>转换为Datatable。有些类包含枚举,这在将数据作为TVP传递给存储过程时会造成问题。

代码语言:javascript
复制
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?

EN

回答 1

Stack Overflow用户

发布于 2017-02-04 00:49:49

可以创建具有正确属性的匿名类型:

代码语言:javascript
复制
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);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41565074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档