EF Code First - SqlServerCE触发器

时间:2011-11-03 09:07:35

标签: c# sql entity-framework ef-code-first

我首先使用实体​​框架代码为我的应用程序,我需要一个触发器。 我的应用程序应该支持不同的数据库引擎,如

  • Sql Server
  • SqlServerCE
  • SQLEXPRESS

触发器,SqlServerCE不支持存储过程,你会怎么做才能得到它 功能?

我可以在“SaveChanges”之后做点什么,有什么好方法?

2 个答案:

答案 0 :(得分:1)

是的,您可以在SaveChanges内部(通过覆盖)或在SaveChanges之后执行某些操作并再次调用SaveChanges来保留新数据,但它与触发器不完全相同。如果您的要求是使用触发器来实现某些功能,那么SqlServerCE就不适合您。如果您将触发器逻辑重写到您的应用程序,您应该有两个版本 - 一个用于使用触发器的大SQL,另一个用于不使用触发器的SQL CE。

答案 1 :(得分:0)

代码首先,虽然它允许您发送一些原始查询,因此执行您自己的本机数据库/服务器操作,但基本上只是为了构建模型和查询该模型而设计。

现在问题:您可以通过向DbContext添加方法(或用于分离关注点的扩展方法)直接构建“存储过程替代方案”。

触发器有点复杂。您可以覆盖SaveChanges方法,在该方法中,您可以基本上跟踪每个更改,无论是在将更改保留到数据库之前还是之后。

然而,通过引入存储库也可以解决这两个问题。请参阅:http://huyrua.wordpress.com/2011/04/13/entity-framework-4-poco-repository-and-specification-pattern-upgraded-to-ef-4-1这允许您在添加,更新或删除某个实体时启动脚本(触发器)