【问题标题】:ASP.net MVC - get data from SQL Server without knowing the data-structureASP.net MVC - 在不知道数据结构的情况下从 SQL Server 获取数据
【发布时间】:2015-03-06 19:53:30
【问题描述】:

我想知道如何在事先不知道数据结构的情况下从 SQL Server 表中获取数据到我的 ASP.net MVC 应用程序中。

例子:

  • 用户将.csv 文件上传到具有未知数据结构的应用程序(可以是3 个字段,也可以是50 个不同数据类型的字段)
  • .csv 文件被存储到 SQL Server 表中
  • 现在我希望应用程序能够显示来自这些上传的数据,例如无需使用硬编码模型的 HTML 表格

是否可以使用连接字符串显示数据,例如LINQ to SQL 还是 EF?最好的情况是我可以将表名等动态分配到查询中。

模型仍将用于访问属于应用程序逻辑的数据,只是显示来自用户上传的数据,目前我还不清楚。

【问题讨论】:

  • 那么您真的希望您的应用程序创建与 csv 结构匹配的数据库表吗?或者您只是想将数据存储在表中 - 在这种情况下您可以探索对象序列化?
  • 在用户上传 csv 文件后,将创建一个与上传的 csv 文件的字段和数据类型相对应的 SQL 服务器表。
  • LINQ to SQL 和 EF 都是对象关系映射器 - 旨在与已知对象类型一起使用以映射到已知存在的表。您尝试做的事情是完全可能的,但是我会考虑使用 ADO.NET / 存储过程来说服您自己的实现
  • 上传的 csv 文件可以是更大的集合(超过 500 万行),但暂时不会与其他表相关。
  • 如果没有对插入逻辑进行验证,您可以在使用 .net 以编程方式创建表后使用这种方法 - 它会快得多 - blog.sqlauthority.com/2008/02/06/…

标签: sql-server asp.net-mvc linq entity-framework csv


【解决方案1】:

EF 和 Linq2Sql 将始终要求您将现有模型关联到数据库表。

如果您确实需要这种“动态”查询,您可以使用像 dapper.Net 这样的微 ORM 将您的查询返回到 dynamic 类型。

此解决方案不会通过从表中检索字段列表来使您免于生成 select sql 查询。也许您可以为此使用 sql server 中的 sys 表(如果那是数据库)。喜欢here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多