DataTable转换为Model

在MVC或者EF等框架下,SQL查询的数据会直接转换成相应的Model(模型),有时我们通过其他方式得到一个DataTable,比如直接执行SQL或者代码内部产生,这时为了能更好的与其他代码结合,可能会需要转换成相应的Model,那我们要怎么处理呢?

只有一个DataTable,要转换成模型,很自然的想到,利用反射。因为只有反射才能得到相应的类型,得到相应的属性。那要反射,我们首先要得到的就是程序集。一般的我们的模型会做成一个单独的类库,比如DemoModel,里面含有很多具体的模型类,比如Student,Company等。所以我们可以直接以程序集名称的方式来载入程序集,代码如下

string assemblyName = nameof(KingModel);
Assembly assembly = Assembly.Load(assemblyName);

得到了程序集assemble之后,我们要知道DataTable对应的数据类型,这时我们可以根据DataTable的TableName来。有人说,从数据库查到的是一个数据集DataSet,里面的DataTable是dt1、dt2这些无法对应数据类型的名称,那要怎么办?

这个问题,其实也不难处理。一种比较直接的方案,就是从数据库中查到这个表的表名,然后放到查询的DataSet中一起返回,之后按顺序将TableName赋值。也可以在客户端写好生成的SQL,然后与要查询的SQL一起执行,然后得到的第一个DataTable就是表名列表。

在TableName对应上了之后,我们就以这个TableN

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值