ASP.NET помага за вмъкване на данни в нормализирани SQL таблици, най-добри практики

Здравейте, имам най-честата ситуация на вмъкване на клиентска поръчка в моята SQL база данни. Създадох заглавка на поръчка и таблици с подробности за поръчка в db и се опитвам да вмъкна единичен запис на заглавка и множество редове с подробности, съответстващи на този запис на заглавка (ограничението PK и FK е headerID).

Понастоящем вмъквам своя заглавен запис, след което правя заявка в db за последния създаден headerID и използвам този идентификатор, за да вмъкна редовете си с подробности, като преминавам през мрежата например.

Знам, че това е глупав начин за вмъкване на записи в нормализирани таблици и се прави допълнително sql извикване, което изглежда ненужно. Следователно някой знае ли по-добро решение на този проблем.


person JustLearning    schedule 16.03.2015    source източник


Отговори (1)


Открих, че използването на Entity Framework решава този проблем, без да се правят допълнителни усилия за търсене на последния вмъкнат headerid и след това да се вмъкне в таблицата с подробности. Така че, ако връзките са добре дефинирани в Entity Framework, рамката се грижи за този процес. Например:

using (var rep = new Repo()){
     Header hd = new Header();
     hd.name = "some name";


     Detail dt = new Detail();
     dt.itemname = "some item name";
     hd.Details.Add(dt);

     rep.Headers.Add(hd);
     rep.savechanges();
}

Така че докато всички операции са извършени, преди основните/подробните данни rep.savechanges(); да бъдат вмъкнати правилно.

Ако обаче EF открие грешка в целостта или някакви други грешки, изобщо няма да бъдат вмъкнати данни.

Така че това е хубав чист начин за вмъкване на основни/подробни данни в SQL база данни.

person JustLearning    schedule 22.12.2015