【发布时间】:2011-03-07 05:57:55
【问题描述】:
在 sql server 中是否有任何中介类的东西充当用户和实际表之间的层?
就像我想要的那样,当用户从我的 .net winform 应用程序中插入数据时,首先,它被插入到一个调解器中,然后它进入实际的表并被插入。
我想要这个,因为一旦用户插入数据发生电源故障,那么我的实际表将是安全的,只有调解器会受到影响,并且在调解器中我将使用 TRANSACTIONS 回滚和提交。
就像我会使用这个:如果调解器完全更新了新数据,然后提交它,然后插入到实际表中,否则,回滚调解器本身而不触及原始表。
【问题讨论】:
-
如果您在 Winforms 应用程序中使用事务,则无需额外的“中介”即可获得此行为
-
@sqlchild:没有意见无济于事。 是的! 当然,您在 C# 中有事务 - 要么查看使用
SqlConnection调用的SqlConnection开始的SqlTransaction,要么查看 C#TransactionScope构造 -
@sqlchild:不要做两次 - either 在 T-SQL 中做 - 总是,一直。在这种情况下,您可能正在使用存储过程,或者您的 SQL 语句都包含
BEGIN TRANSACTION....COMMIT之类的东西。 或: 在您调用的 C# 代码中执行此操作。你需要选择一个并坚持一个。 -
登录/权限与事务无关。登录/权限定义访问安全 - 用户是否允许登录,他可以在应用程序中做什么?交易是为了数据安全 - 确保您的数据更新“有意义”并且是完整的(或回滚)
-
@sqlchild:这是一种方法,如果您使用的是 ORM - 如果您不喜欢它,则需要创建一层视图(用于阅读)和存储过程(用于其他任何内容) 来抽象出你的数据库。工作,通常非常好 - 但需要更多的 T-SQL 编码。
标签: c# sql sql-server sql-server-2005