alw*_*NET 14 c# vb.net sql-server sql-server-2008
我想知道这是否可行.当更新特定表中的值时,我们希望函数在我们的.NET代码中工作.这可以是记录插入或更新.这可能吗?如果没有,是否有替代流程?
你需要问几个问题.
在数据库级别,您是否想要任何业务逻辑?显然,db触发器可以执行此操作(在更改值时执行某些操作,即使只是非常特定的值).
我见过一些db触发器重的系统.他们的"逻辑"深深地与数据库平台高度耦合.这有一些优点,但大多数人可能会说缺点太大(耦合,缺乏包容性/可重用性).
根据您的工作和倾向,您可以:
确保所有DAO/BusinessFunctoin对象调用您的"事件",object.function
以便在发生特定值更改时执行所需操作.
object.function
发生特定值更改时,使用触发器调用"事件" .
你的触发器做了一切.
我个人倾向于选项2,你有一个最小的触发器(它只是激活你的事件调用object.function
),所以你不要将你的数据库深深地耦合到你的业务逻辑.
选项1没问题,但可能有点麻烦,除非你有一个非常狭窄的BF/DAO集与你想看的这个db table.field对话.
选项3是最糟糕的选择,因为您将逻辑耦合到数据库并降低其对业务逻辑层的可访问性.
鉴于此,以下是通过选项2实现此目的的一些信息:
使用MSDN中的此示例:http://msdn.microsoft.com/en-us/library/938d9dz2.aspx.
这显示了如何在项目中运行触发器并调用CLR对象.
实际上,在您的项目中,您可以创建一个触发器并让它调用您的类.
注意这一行: [SqlTrigger(Name="UserNameAudit", Target="Users", Event="FOR INSERT")]
这定义了代码触发的时间,然后在代码中,您可以检查您的约束,然后触发方法的其余部分(或不激活),或object.method
根据需要调用另一个.
直接转到数据库和添加触发器之间的主要区别在于,您可以在部署时一起访问项目中的所有对象.