1

我需要支持旧客户端并从我们的 Linq 查询中组合 ADO 数据集。问题是如何获取使用反射无法获得的特定列信息(varchar 长度、十进制精度等)。

例如,我有表Customer字段名称为 varchar(80)

当我从 linq 获取数据到实体查询时:

var data = (from c in ctx.Customers select c.Name).ToList()

我无法获取maxSize该列data[i].Name并且 adodataset 引发错误。

我已经有了简单的解决方案:

  1. 通过属性引用从 ObjectContext 中提取列元数据的代码
  2. 从 Queryable 解析表达式并将输出属性链接到 edm 列的简单代码。

但是我在解析复杂查询时遇到了很多问题,这些查询包括多个嵌套的 groupbys/unions/joins 等。

有没有人知道任何其他方式(可能使用物化整形器或类似方法)?

4

1 回答 1

0

感谢Joseph Kowalski 的 EFProviderWrappers,我制作了类似的提供者并将其发布在codeplex

于 2012-09-07T21:38:54.833 回答