在Entity Framework DbMigration.Sql函数中使用匿名块

时间:2015-04-02 12:33:23

标签: c# oracle entity-framework entity-framework-6

我使用EF6.0 + Oracle 10g和代码优先方法。

在我的迁移中有这样的代码片段:

Sql(@"
begin
    insert into t_new1 (p1, p2) 
       select p1, p2 from t_old1;

    insert into t_new2 (p1, p2) 
       select p1, p2 from t_old2;
...other DML operations.....
end;");

当我尝试使用Update-Database应用迁移时,我收到的错误没有提供有关问题真实性质的任何提示。

看起来像是

  

Devart.Data.Oracle.OracleException(0x80004005):ORA-06550:第1行第6列:
  PLS-00103:遇到符号""期待以下之一:

     如果loop mod null pragma raise返回选择更新,则使用

开始大小写声明退出goto   close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe

我怀疑它不允许在Begin-End函数中使用DbMigration Sql块。但我无法确定,并希望听到有关这种情况的一些建议。

作为一种解决方法,可以创建存储过程,执行它然后删除。然而,这似乎不够优雅。

0 个答案:

没有答案