2009-10-28 68 views
2

我們有一個使用LINQ訪問數據庫層(MS SQL)的項目。我們現在能否將我們的數據庫層更改爲XML文件並仍然使用相同的LINQ訪問它?使用LINQ使用XML

我們希望增加將數據存儲在單個XML文件或一組XML文件中的可能性。

當前的LINQ to SQL代碼如下所示:

result = (from e in db.Organizations 
      where e.Id == idOrganization 
      select e).SingleOrDefault(); 

result = (from e in db.Organizations 
      where e.Name.Trim().ToUpper() == organizationName.Trim().ToUpper() 
       && e.Id!=idCurrentOrganization 
      select e).Count()>0; 

回答

2

的LINQ to SQL和LINQ to XML有相似之處,但它們並不相同。 LINQ查詢可能會被寫入,以便可以以相同的方式使用它們,但查詢本身的代碼可能需要更改。

你可以舉一些你現在的LINQ to SQL代碼的例子嗎?包括你正在使用什麼類型的數據以及你想如何格式化XML的例子可能會幫助人們給出更具體的指針。

編輯:您的第一個查詢似乎返回一個對象。如果您的LINQ to SQL和您的LINQ to XML都返回相同的類型,那麼您可以將它們交換出來,而無需更改使用結果的代碼。

您的第二個查詢似乎返回一個布爾,所以相同的概念適用於該布爾。在你的解決方案的其他地方代碼將不關心如何設置布爾。

邁克爲您的數據訪問層使用接口的建議是最好的選擇。對於你的兩個例子,你會有一個包含一個組織對象和一個布爾的界面。你的SQL和XML實現將會不同,但你的代碼的其他部分只需要知道如何使用這個接口。

+0

謝謝。我會盡快添加細節。 – Sasha 2009-10-30 08:41:34

1

有一個額外的步驟,你將不得不做的:你將不得不將XML加載到XDocument(或者如果我正確記得是一個XNode)才能夠查詢你的數據。

之後,它只是簡單的選擇LINQ to XML語法樹中的節點。

不幸的是,沒有任何LINQ語法可以讓您查詢這兩種語法,並讓您透明地插入XML或數據庫。

PS。當您選擇節點時,請注意XML命名空間,這可能會讓您頭疼!

PS2。對不起,我沒有代碼方便

PS3。我建議你的數據庫層從接口派生,這樣你會 能夠從XML轉換到DB,反之亦然容易

希望這有助於

+0

謝謝。我會盡量按照你在PS3所說的做 – Sasha 2009-10-30 14:40:47

+0

你非常歡迎 – 2009-10-30 17:43:44