无法使用 Code-First 创建数据库

Posted

技术标签:

【中文标题】无法使用 Code-First 创建数据库【英文标题】:Cannot create database with Code-First 【发布时间】:2017-02-17 06:07:57 【问题描述】:

我正在使用 Visual Studio 2015、Entity Framework v6 和 SQL Server 2016 Express。过去我使用SqlConnectionSqlCommand 创建了一个数据库,并将SQL 填充到一个字符串中。

现在,我正在 Entity Framework Tutorial 上自学 EF6。在简单的代码优先示例(非常简单)中,我从字面上复制并粘贴了我的代码,但仍然看不到在 SSMS 中创建的数据库。我的代码也没有给我任何错误。

我没有粘贴代码,而是截屏了。我希望有人能指出我是什么或缺少教程。

[编辑] 按照 Sampath 的建议,我最终收到以下错误:

[编辑 - 已解决]

我将相同的代码应用到另一台具有相同设置的机器上,并且该代码有效。所以我怀疑 SQL Server 中存在一些损坏,或者某些注册表不正确。我卸载每个 SQL Server 版本和相关工具,手动删除所有文件夹和文件,然后重新安装 SQL Server Express 2016 和工具。然后我的代码工作。

我不认为这是一个解决方案,但如果有人可以提出可能导致此问题的原因,我会尝试重新创建它或发布一个真正的解决方案。

【问题讨论】:

您有本地安装的 SQL Server Express 吗?什么版本? SQL Server Express 2016 和 SQL Server Management Studio。请查看已编辑的问题。 点击异常[查看详细信息]并显示有关异常的更多信息 【参考方案1】:

您必须在web.config 文件中提供连接字符串名称,如下所示。

上下文:

public SchoolContext(): base("MySchoolDB")
        

        

App.config 文件

<add name="MySchoolDB" connectionString="Server=localhost; 
Database=YourDBName;Trusted_Connection=True;" providerName="System.Data.SqlClient" />

您可以在这里获取更多详细信息:Database Initialization

【讨论】:

这样我最终出现了The Application is in break mode 错误。 你必须在你的连接字符串上设置你的Database名字。我已经更新了我的帖子。 或者您可以分享您的连接字符串详细信息吗? 我已经放了一个链接。请也看看。 谢谢。但即使我有Database=MySchoolDB 我仍然收到同样的错误。这不是一个 Web 应用程序,所以我有 App.config 代替。我会将其留空,因为该数据库尚不存在,并且代码首先应该为我创建此数据库而无需编写任何明确的内容,正如您链接中的教程中提到的那样。【参考方案2】:

您必须在配置连接字符串后将实体添加到数据库中,然后 DBContext 将创建数据库。这是一个连接字符串示例:

<add name="Name" connectionString="Data Source=.; Initial Catalog=yourdbName; Integrated Security=True; MultipleActiveResultSets=True;"
      providerName="System.Data.SqlClient" />

【讨论】:

以上是关于无法使用 Code-First 创建数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 EF Core Code-First 创建具有子类别的类别表? [复制]

译第2节--- 什么是Code First?

Code-First 数据库初始化策略

Code-First 迁移问题

EF Code-First 学习之旅

20.翻译系列:Code-First中的数据库迁移技术EF 6 Code-First系列