【发布时间】:2015-03-31 10:13:47
【问题描述】:
我正在尝试将一个非常复杂的模型(就层次结构而言)导出到 CSV 文件。我正在尝试各种方法,但它们都缺少一些东西或需要大量我想避免的编码。
结果我想要的是值的 CSV 提取,CSV 标头来自我在 EF 模型本身上使用的 DisplayName 属性注释。
我尝试过 CSVHelper,但自动映射功能有点乱,无法再忽略具有属性的某些字段;此外,它不支持来自 EF DisplayAttribute 的命名。
我还尝试使用 AutoMapper 将模型映射到单独的 CSV 模型,然后使用 CsvHelper 转储此模型,但我最终还是编写了大量代码来设置列名。
您知道任何快速解决方案来获得我需要的东西吗?我可能会进入 CsvHelper 源代码并重写采用属性名称的部分,但我不知道代码库会有多复杂。有人知道吗?
高度赞赏任何见解。
【问题讨论】:
-
执行 SQL 语句以获取平面 DataTable,然后使用您喜欢的 Csv 工具将该表转换为 CSV 文件。就编码和维护所需的时间而言,它可能是最快的方法。
-
这可能是一个解决方案,但 SQL 本身会相当复杂......列名也会有同样的问题。
-
SELECT column1 AS [Some Pretty Column Name] FROM theTable WHERE ... -
DisplayAttribute可以与列别名一样查看。我想你可以使用反射来获取DisplayAttribute,但是获取属性并输出到 CSV 是悬而未决的。似乎所有工具都有一些难以解决的依赖关系 -
看我的回答。最后,我最终修改了 CsvHelper 源。我仍然不明白为什么这家伙在新版本中删除了属性......无论如何,如果我有足够的时间,这可能会成为一个很好的拉取请求:)
标签: c# entity-framework export-to-csv csvhelper