2010-07-27 78 views
3

我有一個非常動態的SQL Server問題來解決。我正在開發一個工具來驗證多個數據庫中的匹配數據。 [注意:這個項目的要求是相當嚴格的]是否有一個庫可以動態使用Linq直接查詢數據庫?

我需要一個C#工具,讓用戶從動態列表中選擇任何數據庫,然後讓用戶選擇一個表(作爲源數據庫/表)。一旦完成,用戶再次爲另一個數據庫和表格(或多個表格作爲目的地)執行此操作。

一旦選擇了源和目標,用戶可以選擇哪些字段映射到哪些其他字段。

最後,程序需要遍歷源表中的記錄,並找到目標表的任何匹配的密鑰。它需要檢查的東西,只有一個關鍵匹配,所有其他映射字段具有相同的數據等...

我想在我的代碼中使用Linq,只是傳遞字段/表的字符串我正在運行這個基本邏輯。問題是數據庫&模式在編譯時是未知的。

我正在尋找這個問題的方向。我似乎無法找到解決方案。我最近來到的是動態的Linq-to-sql庫。但這只是在你的數據模型範圍內動態的。我甚至無法擁有數據模型。

我想丟棄整個LINQ的東西放在一起的只是寫我自己的快速和骯髒的方法鏈接生成我需要的基本的SQL(基本上是花哨的字符串生成器)的。

回答

3

我不認爲LINQ到SQL是非常適合這項任務。 L2S擅長從數據庫獲取業務對象,並再次更新它們 - 一次一個(或幾個)。

我不認爲使用LINQ到SQL將大大在這種情況下,如果你真的處理有關問題的數據庫和表的元數據你受益匪淺。在這種情況下,您既可以直接使用SQL和ADO.NET(SqlDataReader最好)來查詢系統目錄視圖(如sys.tablessys.columns等),或者你可以考慮使用SQL Server Management Objects (SMO)庫以訪問的內臟你的SQL服務器。無論採用哪種方式,您最終都可能會得到您自己從零件和零件中組裝的對象列表 - 當然,您還可以在這些內存列表和集合中使用Linq-to-Objects,沒問題。

一些資源來看看:

+0

可能最好地利用ADO.Net「的getSchema 「方法(http://msdn.microsoft.com/en-us/library/kcax58fh.aspx)或INFORMATION_SCHEMA視圖(http://msdn.microsoft.com/en-us/library/ms186778.aspx)而不是「系統」。表。其他兩種方法均得到支持和記錄。 – 2010-07-27 04:58:39

+0

@Aydsman:「系統」。目錄視圖也完全記錄在這裏(這裏是:http://msdn.microsoft.com/en-us/library/ms189082.aspx),並且通常比一般用途的ANSI-Standard INFORMATION_SCHEMA視圖更有用(但特定於SQL Server) 。 – 2010-07-27 05:01:10

相關問題