簡體   English   中英

使用LINQ從幾個類向MS SQL數據庫添加數據?

[英]Adding data into MS SQL Database from several classes using LINQ?

好的,所以我什至不知道從哪里開始。 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數據庫。

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

  • 我已經確定該產品早於我的代碼。 (以上是一個粗略的例子)
  • 我還驗證是否存在尚無構建,然后在添加新信息之前刪除與該特定構建相關的所有詳細信息

這就是我被困的地方:

  • 所以我需要使用現有的產品ID
  • 我需要創建構建細節
  • 如果該文件不存在,我需要添加一個文件;如果該文件已經存在,則需要獲取一個現有的FileID
  • 然后,我需要將特定文件添加到特定版本(BuildFiles表)
  • 然后我需要添加文件詳細信息

因此,幾乎所有東西都需要,大聲笑。

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

我是否有一個合適的方法來查看特定產品的文件是否存在,如果不存在,則添加該文件?

然后,當我執行所有操作時,是否查詢文件和內部版本以獲取buildID和FileID,並將內部版本和文件添加到BuildFiles表中。

然后,通過首先查詢buildFiles詳細信息以獲取ID,最終將這些值添加到具有BuildFilesID的文件詳細信息表中?

還是我在這里完全錯了?

如果我有20'000個文件(可能是這種情況),那么將要進行成千上萬的查詢,因此我擔心它會有點慢或發瘋。

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

考慮使用像Linq to SQL這樣的簡單對象關系映射器。 它將為您創建一堆這樣的腳手架代碼,然后您可以使用它們來實現所需的任何邏輯。 這將大大簡化您的生活。

我所看到的最好的例子是Scott Hanselman在NerdDinner上的演講 他關於創建Linq to SQL Classs的討論始於演講的6分30秒。 觀看大約一分鍾,然后轉到此博客條目:

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

最后,Scott Guthrie在有關Linq to Sql的博客系列非常出色,網址為:

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

代碼猴子

觀看Hanselman從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類。

今天晚些時候,我將發布一些示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM