2009-06-08 25 views
0

好的,我甚至不知道從哪裏開始。 SQL編程對我來說是相當新的。使用LINQ將數據從幾個類添加到MS SQL數據庫?

另外,在我繼續談論我的問題之前,我希望能夠在LINQ中完成此操作,而不是使用存儲過程。

問題:我有多個嵌套類,我需要能夠將類添加到sql數據庫中的多個表。如果它已經存在,我也不需要添加數據。

 
-------------------------------------------------------------------------- 
- Products  - Build  - File  - FileDetail - BuildFiles - 
-------------------------------------------------------------------------- 
- ProductID  - BuildID  - FileID - FileDetailID - BuildFilesID - 
- Product_Name - Build_Number - File_Name - File_Size - BuildID  - 
-    - Build_Date - File_Path - File_Version - FileID  - 
-    - ProductID - ProductID - BuildFilesID -    - 
-------------------------------------------------------------------------- 

我的課程類似但不完全相同。因此,例如:

ProductProperties productProperties = new ProductProperties("Notepad","090706"); 
Product myProduct = new Product(productProperties); 
FileDetails fileDetails = new fileDetails("Notepad.exe","20kb","1.0.0.0"); 
myProduct.AddFile(fileDetails); 
FileDetails fileDetails2 = new fileDetails("Notepad.config","5kb","1.1.2.5"); 
myProduct.AddFile(fileDetails2); 

現在我需要將詳細信息添加到SQL數據庫。

有關該工具的一些注意事項:

  • 我已經確保了產品在我的代碼早存在。 (以上是一個粗略的例子)
  • 我也驗證是否存在尚未建立,如果有那麼我將我的新信息前刪除所有與該特定構建的細節

這是我在哪裏卡:

  • 所以我需要使用現有的產品編號
  • 我需要創建構建細節
  • 我需要添加一個文件,如果文件不存在,或讓現有寫到FileID如果文件已存在
  • 我則需要特定的文件添加到特定的構建(構建文件表)
  • 然後我需要添加文件的詳細信息

所以非常需要多大的一切,哈哈。

問題是,我不知道最好的方法。例如,是否創建查詢以查找特定產品的產品ID,然後在將該行添加到構建表時使用該產品ID?

我是否有一個sperate方法來查看特定產品是否存在文件,如果不存在,那麼添加文件?

然後,當我這樣做時,是否查詢文件和構建以獲取buildID和FileID並將構建和文件添加到BuildFiles表。

然後最後通過首先查詢buildFiles詳細信息來獲取ID,然後使用BuildFilesID將值添加到文件詳細信息表中?

還是我完全錯了?

如果我有20'000個文件可能是這種情況,將會有成千上萬的查詢只是爲了做到這一點,所以我擔心它會有點慢或者瘋狂。

任何想法的建議和例子將是偉大的!

回答

0

考慮使用一個簡單的對象關係映射器,如Linq to SQL。它會爲你創建一堆腳手架代碼,然後你可以使用它來實現你想要的任何邏輯。這將大大簡化你的生活。

我看到的最好的例子是Scott Hanselman's talk on NerdDinner。他關於創建Linq to SQL類的討論始於6分30秒。手錶了大約一分鐘,然後去這個博客條目:

http://www.fryan0911.com/2009/05/what-is-linq-to-sql-introduction.html

最後,斯科特·格思裏對LINQ的一個優秀博客系列在到SQL:

http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx

+0

問題是我不明白我應該怎麼做。 例如,我應該有一個方法來驗證文件存在,如果不添加它們,那麼在那之後,然後添加文件的詳細信息? – 2009-06-09 05:52:04

0

代碼猴子,

觀看Hanselman's video從11:00到15:30他介紹瞭如何創建Rob Conery樣式存儲庫。別擔心周圍的ASP.NET MVC的東西,關鍵是存儲庫對象將包含用於添加,刪除和確定記錄是否存在的方法。一旦你的版本庫已經建立,你就能這樣寫代碼:

Repository repository = new Repository(); 
if (!repository.exists(myFileID)) 
{ 
    myFile = new File 
    { 
     File_Name = myFileName; 
     FilePath = myFilePath; 
     ProductID = productID; 
    } 
    myNewFileID = repository.AddFile(myFile); 
} 

需要注意的是,假設你已經創建LINQ to SQL類爲你的表。您編寫的存儲庫將基於這些Linq to SQL類。

今天晚些時候我會發表一些例子。