繁体   English   中英

删除旧的Entity Framework生成的数据库后创建新的数据库

[英]Create new database after deleting old Entity Framework generated database

我使用下面的连接字符串使用Entity Framework使用代码优先方法创建了一个简单的上下文。 一切顺利,运行测试方法后,我发现自己带有.mdf.ldf文件。

"data source=.\SQLEXPRESS;Integrated Security=SSPI;database=testdb;AttachDBFilename=Q:\Temp\testdb.mdf;User Instance=true"

由于某种原因,我希望删除该数据库。 我尝试在SSMS中查找数据库,但找不到。 它没有在我的数据库下注册。 现在我觉得我有3种选择:

  1. 将数据库附加到SSMS中,然后将其删除

  2. 通过搜索.MDF文件,然后从VS中删除数据库,在VS2015 Server Explorer中.MDF数据库。

    通过服务器资源管理器添加数据库

    在此处输入图片说明

    按下以在SQL Server对象资源管理器中浏览

    在此处输入图片说明

    出现在我可以按Delete键的Server Object Explorer中

    在此处输入图片说明

  3. 只需删除.mdf.ldf文件

所有这三种方法都将删除.mdf.ldf文件。

但是 :当我再次启动上下文时,我希望它从头开始再次创建文件。 但是我得到以下错误:

初始化数据库时发生异常。 有关详细信息,请参见InnerException。

基础提供程序在打开时失败。
无法打开登录请求的数据库“ testdb”。

登录失败。
用户“ DESKTOP-XXXXXXX \\ XXXXX”的登录失败。

我觉得我已经删除了对该数据库的所有引用。 我找不到其他参考。 但是以某种方式出现它是因为它试图登录而不是创建新数据库。

问题:有人知道如何解决此问题吗? 如何正确删除数据库+参考?

更新

在VS中,在测试过程中打开连接,然后删除文件,然后看到以下连接字符串。

Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=Q:\Temp\testdb.mdf;Integrated Security=True;Connect Timeout=30

但是,在VS2015中浏览我的Localdb时,没有列出数据库。

您是否可以使用Db初始化策略CreateDatabaseIfNotExists尝试对Db进行显式初始化。 有点像..

public class YourDBContext: DbContext 
{

        public YourDBContext(): base("YourDBContextConnStr") 
        {
            Database.SetInitializer<YourDBContext>(new CreateDatabaseIfNotExists<YourDBContext>());

        }
}

干杯

由于我使用“。\\ SQLEXPRESS”进行了初始化,并且EF将其更改为“(LocalDB)\\ MSSQLLocalDB”,因此我更改了连接字符串。

"data source=(LocalDB)\MSSQLLocalDB;Integrated Security=SSPI;database=testdb;AttachDBFilename=Q:\Temp\testdb.mdf");   

等等。 现在,可以将连接字符串中的SQL Express LocalDB用作数据源,我可以轻松删除和重新创建数据库。 现在,更多的数据库现在可以正确显示在我的SQL Server对象资源管理器中的LocalDb下(而不是完全不在任何地方显示)。

我仍然不知道为什么它最初可以使用“。\\ SQLEXPRESS”连接字符串创建但不能重新创建。 好像它在隐藏.mdf数据库存在的信息,并一直试图重新连接它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM