ASP.NET и Entity Framework в многоуровневой архитектуре - используя Entity Framework только для ORM

Два возможных подхода:

$stmt = $pdo->prepare('INSERT INTO foo VALUES(:v1_1, :v1_2, :v1_3),
    (:v2_1, :v2_2, :v2_3),
    (:v2_1, :v2_2, :v2_3)');
$stmt->bindValue(':v1_1', $data[0][0]);
$stmt->bindValue(':v1_2', $data[0][1]);
$stmt->bindValue(':v1_3', $data[0][2]);
// etc...
$stmt->execute();

Или:

$stmt = $pdo->prepare('INSERT INTO foo VALUES(:a, :b, :c)');
foreach($data as $item)
{
    $stmt->bindValue(':a', $item[0]);
    $stmt->bindValue(':b', $item[1]);
    $stmt->bindValue(':c', $item[2]);
    $stmt->execute();
}

Если данные для всех строк находятся в одном массиве, я бы использовал второе решение.

30
задан George Stocker 27 May 2009 в 16:51
поделиться

4 ответа

  1. Если вы практичны: да! Это позволит избежать работы с двойным отображением и потенциальных ошибок, вызванных двойным отображением. (Под двойным отображением я подразумеваю DB -> ORM и ORM -> Business logic.)
  2. Используйте TransactionScope . Это лучший способ выполнять транзакцию, не беспокоясь о вложенных транзакциях.
9
ответ дан 28 November 2019 в 00:28
поделиться

Другой способ сделать это - использовать классы сопоставления, использовать EF исключительно для доступа к данным и использовать классы EF, созданные только в DAL, а затем сопоставить эти объекты DAL с объектами вашего BLL с помощью преобразователей. У нас это хорошо работает.

2
ответ дан Ray 27 May 2009 в 16:51
поделиться

Не в структуре сущностей, но я попытался создать образец с двумя хранимыми процедурами вставки, выполняемыми отдельно на уровне доступа к данным (с использованием блока приложения доступа к данным 3.1), заключенных внутри контекста TransactionScope в Service / BLL, не сработало. Одна вставка прошла, другая не прошла, и данные БЫЛИ зафиксированы.

Удалось ли вам сделать это самому?

0
ответ дан 28 November 2019 в 00:28
поделиться

Я подозреваю, что это может быть ответом на вашу проблему:

http://code.msdn.microsoft.com/EFPocoAdapter/Release/ProjectReleases.aspx?ReleaseId=1580

Инструмент генерирует классы, не зависящие от структуры сущностей, которые можно передавать по уровням.

3
ответ дан 28 November 2019 в 00:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: