我如何使用F#FAKE的DropDb然后使用failwith?

时间:2015-12-14 10:18:11

标签: sql database f# f#-fake

当我的一个Target函数抛出错误时,我希望我的应用程序首先使用DropDb,然后失败。但是当我有以下代码时:

DropDb *databaseInfo* |> ignore
failwith "Migration failed"

在DropDb删除数据库之前,应用程序失败。

一旦DropDb完成,我怎样才能使应用程序失败?

1 个答案:

答案 0 :(得分:0)

我似乎找到了这个问题:

在我的脚本中,我之前已经运行过DropDb,然后再次创建了一个DB。 FAKE中DropDb的代码是:

let DropDb serverInfo = 
    if intitialCatalogExistsOnServer serverInfo then
         logfn "Dropping database %s on server %s" (getDBName serverInfo) (getServerName serverInfo)
        (getDatabase serverInfo).DropBackupHistory |> ignore
        getDBName serverInfo |> serverInfo.Server.KillDatabase
    serverInfo

serverInfo已存储在缓存中,该缓存未由我之前再次创建数据库的脚本更新,因此initialCatalogExistsOnServer返回false并且没有任何代码运行。