ASP.NET помогает вставлять данные в нормализованные таблицы SQL.

Привет, у меня самая распространенная ситуация с вставкой клиентского заказа в мою базу данных SQL. Я создал заголовок заказа и таблицы сведений о заказе в базе данных, и я пытаюсь вставить одну запись заголовка и несколько строк сведений, соответствующих этой записи заголовка (ограничение PK и FK - это идентификатор заголовка).

В настоящее время я вставляю свою запись заголовка, затем запрашиваю базу данных для последнего созданного идентификатора заголовка и использую этот идентификатор для вставки строк с подробными сведениями, например, в цикле по сетке.

Я знаю, что это глупый способ вставки записей в нормализованные таблицы, и есть дополнительный вызов sql, который кажется ненужным. Поэтому может кто-нибудь знает лучшее решение этой проблемы.


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


Ответы (1)


Я обнаружил, что использование Entity Framework решает эту проблему, не прилагая дополнительных усилий для поиска последнего вставляемого заголовка, а затем вставляя его в таблицу сведений. Таким образом, если отношения хорошо определены в 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