Хорошо, поэтому я даже не уверен, с чего начать. Программирование на 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, если файл уже существует
- Затем мне нужно добавить определенные файлы в конкретную сборку (таблица BuildFiles)
- Тогда мне нужно добавить детали файла
Так что почти все нужно, лол.
Проблема в том, что я не знаю лучшего способа для этого. Например, создать запрос для поиска идентификатора продукта для конкретного продукта, а затем использовать этот идентификатор продукта при добавлении строки в таблицу сборки?
Есть ли у меня отдельный метод проверки, существует ли файл для определенного продукта, и если нет, то добавить файл?
Затем, когда я делаю все это, я запрашиваю файл и сборку, чтобы получить buildID и FileID и добавляю сборку и файл в таблицу BuildFiles.
Затем, наконец, добавьте значения в таблицу сведений о файле с BuildFilesID, сначала запросив детали buildFiles для получения идентификатора?
Или я тут совершенно не прав?
Если у меня есть 20 000 файлов, которые могут иметь место, для этого будут сотни тысяч запросов, поэтому я волновался, что это будет немного медленно или безумно.
Любые идеи, предложения и примеры будут великолепны!