【问题标题】:Is there a library to use Linq to directly query databases, dynamically?是否有使用 Linq 直接动态查询数据库的库?
【发布时间】:2011-03-21 09:39:26
【问题描述】:

我有一个非常动态的 SQL Server 问题要解决。我正在开发一个工具来验证多个数据库中的匹配数据。 [注意:这个项目的要求非常严格]

我需要制作一个 C# 工具,让用户从动态列表中选择任何数据库,然后让用户选择一个表(充当源数据库/表)。完成后,用户对另一个数据库和表(或作为目标的多个表)再次执行此操作

一旦选择了源和目标,用户就可以选择哪些字段映射到哪些其他字段。

最后,程序需要遍历源表中的记录并在目标表中找到任何匹配的键。它需要检查诸如只有一个键匹配、所有其他映射字段具有相同数据等...

我想在我的代码中使用 Linq,并为我正在运行此基本逻辑的字段/表传递字符串。问题是数据库和模式在编译时是未知的。

我正在寻找有关此事的方向。我似乎找不到解决方案。我最接近的是那里的动态 Linq-to-sql 库。但这仅在您的数据模型范围内是动态的。我什至没有数据模型。

我正在考虑将整个 Linq 东西放在一起,只是编写我自己的快速而肮脏的方法链接来生成我需要的基本 SQL(基本上是一个花哨的字符串构建器)。

【问题讨论】:

    标签: c# linq linq-to-sql dynamic


    【解决方案1】:

    我不认为 Linq-to-SQL 非常适合这项任务。 L2S 擅长从数据库中获取您的业务对象,然后再次更新它们——一次一个(或几个)。

    我认为在这种情况下使用 Linq-to-SQL 不会对您有很大好处,因为您实际上是在处理有关数据库和表的元数据。在这种情况下,您可以使用直接 SQL 和 ADO.NET(最好是SqlDataReader)来查询系统目录视图(如sys.tablessys.columns 等),或者您可以考虑使用SQL Server Management Objects (SMO)库以访问 SQL Server 的内部结构。

    无论哪种方式,您最终都可能会得到您自己从零碎中组装的对象列表 - 当然,您可以在这些内存列表和集合上使用 Linq-to-Objects,不问题。

    需要查看的一些资源:

    【讨论】:

    猜你喜欢
    • 2011-07-05
    • 2020-07-13
    • 1970-01-01
    • 2012-02-02
    • 2017-01-16
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多