数据库
首页 > 数据库> > 有没有一个库可以使用Linq动态地直接查询数据库?

有没有一个库可以使用Linq动态地直接查询数据库?

作者:互联网

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

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

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

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

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

我正在寻找这方面的方向.我似乎找不到解决方案.我最近到达的是那里的动态Linq-to-sql库.但这只是在数据模型的范围内是动态的.我什至没有数据模型.

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

解决方法:

我认为Linq-to-SQL不太适合完成此任务. L2S擅长从数据库中获取业务对象,然后一次又一次(或一次)更新它们.

在这种情况下,使用Linq-to-SQL不会真正让您受益,因为在这种情况下,您实际上正在处理有关数据库和表的元数据.在这种情况下,您可以使用直接SQL和ADO.NET(最好是SqlDataReader)来查询系统目录视图(例如sys.tables,sys.columns等),也可以考虑使用SQL Server管理对象( SMO)库以访问SQL Server的内部.

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

一些需要检查的资源:

> MSDN OVerview of SMO
>似乎证明我做错了:Linq-to-SQL Data Synchronizer(在封面下使用SMO)

标签:dynamic,linq-to-sql,linq,c
来源: https://codeday.me/bug/20191209/2097590.html