[英]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,然后在將行添加到構建表時使用該產品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.