Я знаю, что LINQ to SQL автоматически переносит все изменения в транзакции базы данных. Поэтому, если бы я хотел использовать возвращенный идентификатор для другой вставки (моя таблица пользователя имеет AddressID, поэтому я добавляю новую запись адреса, а затем добавляю новую запись пользователя с этим ID), и возникла проблема с вставкой пользователя, вставка адреса не откатывается. Должны ли вы обернуть оба SubmitChanges в другой транзакции?ASP MVC LINQ to SQLtransaction rollback
ответ
LINQ to SQL будет обрабатывать это для вас, если ваши таблицы имеют отношение внешнего ключа.
Если вы хотите использовать Визуальный Studios DBML дизайнер вы можете следовать приведенным ниже
Первых перетащить соответствующие таблицы на ваш дизайнер и realtionship один-ко-многим будет создан путем добавления свойства коллекции UserAddress к классу User.
Это позволит создать объект UserAddress и добавить его к объекту пользователя, затем сохранить объект User, LINQ к SQL будет обрабатывать поиск и ввод необходимых первичных ключей в качестве части сделки
User user = new User();
user.FirstName = "Foo";
user.LastName = "Bar";
UserAddress userAddress = new UserAddress();
userAddress.Line1 = "22";
userAddress.Line2 = "Acacia Ave";
userAddress.Postcode = "E13 9AZ";
user.UserAddresses.Add(userAddress);
db.Users.InsertOnSubmit(user);
db.SubmitChanges();
В сокращенной версии sql, созданной во время отправки изменений, вы можете видеть, что оба обновления таблиц содержатся в одной транзакции и поэтому будут откатны, если во время выполнения обнаружен какой-либо сбой (вы можете запустить профайлер против ваш db для глубокого просмотра sql).
BEGIN TRANSACTION
INSERT INTO [dbo].[UserAddresses]([UserID], [Line1], [Line2], [Postcode]) VALUES (@p0, @p1, @p2, @p3)
SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]
exec sp_executesql N'INSERT INTO [dbo].[UserAddresses]([UserID], [Line1], [Line2], [Postcode]) VALUES (@p0, @p1, @p2, @p3)
SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]',N'@p0 int,@p1 nchar(10),@p2 nchar(10),@p3 nchar(10)',@p0=3,@p1=N'22 ',@p2=N'Acacia Ave',@p3=N'E13 9AZ '
INSERT INTO [dbo].[Users]([FirstName], [LastName]) VALUES (@p0, @p1)
SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]
exec sp_executesql N'INSERT INTO [dbo].[Users]([FirstName], [LastName]) VALUES (@p0, @p1)
SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]',N'@p0 nchar(10),@p1 nchar(10)', @p0=N'Foo ',@p1=N'Bar
COMMIT TRANSACTION
- 1. linq to sql underitchanges rollback
- 2. ASP MVC Linq запрос
- 3. C# convert DbContextTransaction to SqlTransaction
- 4. linq-to-sql asp mvc - где доступ к контексту данных?
- 5. linq join in ASP MVC
- 6. ASP MVC - byte [] to Image
- 7. MVC linq to sql sum
- 8. Базовая производительность DB2 COMMIT/ROLLBACK VS ROLLBACK TO SAVEPOINT
- 9. ASP .NET MVC + LINQ Сгенерированные классы + DataAnnotations
- 10. ASP MVC/Linq - удалить объекты из запроса
- 11. Запрос Linq для соединения таблиц Mvc Asp
- 12. Linq оставил присоединиться к ASP MVC
- 13. ASP MVC to Silverlight MVVM issues
- 14. Asp mvc 5 relationship many-to-many
- 15. ajax call to asp mvc controller
- 16. SQLTransaction завершил ошибку
- 17. Закрыть SqlConnection при использовании SqlTransaction
- 18. Rollback pm2 deploy to specific commit
- 19. Проверка ASP.NET MVC 2 LINQ to SQL
- 20. LINQ to SQL и Data Projection, MVC
- 21. ASP.NET MVC + LINQ to SQL или сущности?
- 22. Путаница MVC и LINQ to SQL
- 23. Linq to SQL MVC проблема с FK
- 24. Ошибка при использовании SqlTransaction
- 25. asp.net mvc отношения many-to-many в linq to sql
- 26. Linq to SQL: Почему «Это SqlTransaction завершено, оно больше не используется».
- 27. Соединения закрыта ошибка с SqlTransaction
- 28. Обработка исключений при откате SqlTransaction
- 29. Linq Expression to String
- 30. Ошибка Linq-to-SQL
Чувак. Это замечательно. Я обожаю меня этим материалом ORM! Большое вам спасибо. –