我在我的 .net 应用程序中有一个操作,它在 2 个不同的 sql 服务器表中创建了一条记录。这里的最佳做法是什么?
一个存储过程应该创建两个记录吗?或者是否应该使用不同的存储过程在适用的数据库中创建每条记录并将两个调用包装在一个事务中,这样如果一个调用失败,那么两个调用都会失败?
哪个性能更高?
我在我的 .net 应用程序中有一个操作,它在 2 个不同的 sql 服务器表中创建了一条记录。这里的最佳做法是什么?
一个存储过程应该创建两个记录吗?或者是否应该使用不同的存储过程在适用的数据库中创建每条记录并将两个调用包装在一个事务中,这样如果一个调用失败,那么两个调用都会失败?
哪个性能更高?
存储过程肯定会更高效。它还将导致您必须在服务器端编写的代码更少。缺点是,您现在需要知道如何自己编写 SQL,或者让与您一起工作的 DBA 可以为您编写 SQL。
关于您的另一个问题,它将是 1 个存储在两个表中的过程。
另一件需要考虑的事情:如果你必须在整个代码中做很多这样的事情,那么学习一个好的 ORM 并在代码中完成这一切可能是值得的(选项 2)。但如果这是你只在少数几个地方做的一次性事情,那么存储过程将是一种更聪明的方法。
最好将您的逻辑放在 SQL Server 中的存储过程中并定义事务范围,当在 .net 应用程序中触发的此操作在存储过程中执行您的操作时,如果这两个操作成功完成,则提交事务,否则此事务将滚动-背部。因为通过这种方式,您可以获得更好的性能。根据 Microsoft 文档使用存储过程有一些好处,如下所示: