c# DataContext CreateDatabase 不起作用(如果删除数据库文件)



i创建一个应用程序,该应用程序使用本地数据库,该数据库存储在AppData文件夹中。我创建了一个DataContext来获取数据:

private NorthWindDataContext northWindDataContext = new NorthWindDataContext(connectionString);

在应用程序的每个启动下,它检查数据库是否存在。如果不存在,则应创建数据库:

DB:
if (!northWindDataContext.DatabaseExists())
{
    try
    {
        northWindDataContext.CreateDatabase();
    }
    catch (Exception ex1)
    {
        try
        {
            northWindDataContext.DeleteDatabase();
        }
        catch (Exception ex2)
        {
        }
    }
    goto DB;
}

这可以正常工作,但是如果我在目录中删除文件并再次启动应用程序,则在使用CreateDatabase创建数据库时将获得以下执行。

"数据库'c: users me appdata local test northwind.mdf'已经存在。选择其他数据库名称。"

如果CreateDatabase -Method失败,则应使用DeleteDatabase删除数据库(实际上不存在(。这不是应用程序抛出的例外。然后,它应该尝试再次创建数据库。现在,该应用程序不会在CreateDatabase上投掷执行,但也不是创建的数据库文件。

这在应用程序的每个启动中都会发生,如果用户删除了数据库文件,那么我做错了什么或缺少什么?

数据上下文默认使用localdb的实例...删除数据库文件( .mdf file(并不意味着在localdb的此实例中不存在数据库再过了。您可以通过删除任何.mdf文件并查询服务器的主数据库

来确认。
select * from sys.databases

您会发现数据库即使在删除文件后也已经存在,这就是为什么如果您尝试创建数据库,并且可能无法满足条件!northWindDataContext.DatabaseExists(),则您正在获得数据库退出错误,因为LocalDB认为LocalDB仍然认为它仍然具有db

我尝试打开SQL Server Management Studio并从那里删除数据库,然后我找不到一个文件错误,此时LocalDB注意到数据库已被删除,并且已将其从对象Explorer和sys.databases视图中删除

最新更新