实体框架:检查是否存在触发器

时间:2015-08-05 17:14:09

标签: sql-server entity-framework tsql entity-framework-6

我正在使用Entity Framework v 6.1.3,我想检查数据库中是否存在触发器。

我正在运行一段SQL,但是对触发器存在的检查不起作用。在针对同一数据库运行时,它在SQL Server Management Studio中运行良好。从EF / .NET内部运行时,它找不到触发器

IF NOT EXISTS (SELECT * FROM sys.triggers WHERE [name] = 'DbTrigAuditHandler_CreateAlterDrop')
BEGIN
    DECLARE @sql NVARCHAR(MAX)

    SELECT @sql = ' DYNAMIC SQL CREATE TRIGGER ' 

    EXEC sp_executesql @sql
END

结果我得到一个异常,因为该对象已经存在。

我有两个问题。

  1. 为什么会发生这种情况?
  2. 有没有办法检查内部EF?
  3. 干杯

1 个答案:

答案 0 :(得分:0)

我不知道为什么会这样,但是当我更换我的调用代码时: 从

Database.ExecuteSqlCommand(File.ReadAllText(path));

var sql = File.ReadAllText(path);
Database.ExecuteSqlCommand(sql);

代码按预期执行。