好的,所以我甚至不确定从哪里开始。 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?
我是否有sperate方法来查看特定产品是否存在文件,如果没有,则添加该文件?
然后当我完成所有这些操作时,我是否查询文件和构建以获取buildID和FileID,并将构建和文件添加到BuildFiles表中。
然后最后使用BuildFilesID将值添加到文件详细信息表中,首先查询buildFiles详细信息以获取ID?
或者我在这里完全错了?
如果我有20'000个文件可能就是这种情况,那么就会有成千上万的查询,所以我担心它会有点慢或疯狂。
任何想法建议和例子都会很棒!
答案 0 :(得分:0)
考虑使用像Linq to SQL这样的简单对象关系映射器。它将为您创建一堆这样的脚手架代码,然后您可以使用它来实现您想要的任何逻辑。它将大大简化您的生活。
我见过的最好的例子是Scott Hanselman's talk on NerdDinner。他关于创建Linq to SQL Classes的讨论从谈话的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
答案 1 :(得分:0)
Code Monkey,
从11:00到15:30观看Hanselman's video,其中介绍了如何创建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类。
今天晚些时候我将发布一些例子。