无法使用 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。过去我使用SqlConnection
和SqlCommand
创建了一个数据库,并将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 创建数据库的主要内容,如果未能解决你的问题,请参考以下文章