C# 是否有一个库可以使用Linq直接动态查询数据库?

C# 是否有一个库可以使用Linq直接动态查询数据库?,c#,linq,linq-to-sql,dynamic,C#,Linq,Linq To Sql,Dynamic,我有一个非常动态的SQL Server问题要解决。我正在开发一个工具,用于验证多个数据库中的匹配数据。[注:本项目要求非常严格] 我需要制作一个C工具,让用户从动态列表中选择任何数据库,然后让用户选择一个充当源db/表的表。完成后,用户将对另一个数据库和表或多个表作为目标再次执行此操作 一旦选择了源和目标,用户可以选择哪些字段映射到哪些其他字段 最后,程序需要循环源表中的记录,并在目标表中找到任何匹配的键。它需要检查的东西,如,只有一个键匹配,所有其他映射字段有相同的数据,等等 我想在我的代码中

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

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

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

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

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

我正在寻找这件事的方向。我似乎找不到解决办法。最接近我的是动态LINQtoSQL库。但这只是在数据模型的范围内是动态的。我甚至连数据模型都没有


我想把整个Linq都放在一起,只需编写我自己的快速而肮脏的方法链接,就可以生成基本的SQL,基本上我需要一个奇特的字符串生成器

我认为LINQtoSQL不太适合这个任务。L2S擅长从数据库中获取业务对象,并再次更新它们—一次更新一个或几个

我认为在这种情况下,使用LINQtoSQL不会给您带来很大好处,因为您实际上是在处理有关数据库和表的元数据。在这种情况下,您可以最好使用straight SQL和ADO.NET SqlDataReader来查询系统目录视图,如sys.tables、sys.columns等,也可以考虑使用SQL Server管理对象SMO库来访问SQL Server的内部

不管是哪种方式,您最终可能会得到由您自己组装而成的对象列表——当然,您可以在内存中的列表和集合中使用Linq to对象,这没有问题

要查看的一些资源:

似乎是为了证明我错了:在幕后使用SMO
最好使用ADO.Net GetSchema方法或信息模式视图,而不是sys。桌子。其他两种方法都受支持并有文档记录。@Aydsman:sys。目录视图在这里也有很好的文档记录:,通常比一般用途的ANSI标准信息模式视图更有用,但SQL Server特定。