【发布时间】:2019-11-24 18:21:28
【问题描述】:
我们有一个新要求,我们需要从表中动态获取列列表。我们在这个表中有 141 列,但假设我们只想返回其中的 2 或 3 个,我们只是在运行时才知道哪 3 个。
这些列作为List<string> 传入,希望我可以使用反射来访问源对象上的属性。
我们已经通过能够将TObjectDto 传递到我们的服务中来支持这一点,我们的IQueryable 在访问数据库之前被投射到该服务中,它只是不处理等式中的动态列部分。
到目前为止,我无法使用 MapFrom 做类似的事情(运气不好,因为 LINQ 不支持反射,它必须是 LINQ,否则查询不支持)
http://docs.automapper.org/en/stable/Queryable-Extensions.html#supported-mapping-options
有什么理由我应该继续从这个兔子洞中走下去,而只使用我必须生成的一些原始 SQL 吗?
【问题讨论】:
-
在我看来你的数据库设计对于这个应用程序是错误的
-
我不反对,这在某种程度上是我们应用程序的核心,并且非常庞大(在列和数据中)
-
您需要 80~ 个不同的查询,您需要通过一个字符串(列名或最好的名称)进行选择。像 Dictionary
>>> 之类的东西怎么样?
标签: c# entity-framework-6 automapper iqueryable automapper-8