【发布时间】:2011-08-20 22:33:48
【问题描述】:
以防万一我做错了什么,我上传了一个视频,这样你就可以看到我所做的每一步!我能够重现此错误。
基本上 - 开始一个新的 MVC 3 项目并在一个简单的类上以正常方式使用 EF。
我使用了以下连接字符串:
<add name="databaseconnection" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|database.mdf;User Instance=true;Initial Catalog=database" providerName="System.Data.SqlClient" />
当我导航到该网站时,一切都可以正常工作并且符合预期。
现在,如果我尝试双击 .mdf 数据库在 Visual Studio 中打开它,一切都会崩溃!
我可以按预期连接和查看表,但即使我什么都不做,只是关闭(和/或)删除连接,下次我转到应用程序时,我会收到以下错误:
一个或多个文件不匹配 数据库的主文件。如果你 正在尝试附加数据库, 用正确的方法重试操作 文件。如果这是现有的 数据库,文件可能已损坏 并且应该从备份中恢复。 无法打开数据库“数据库” 登录请求。登录 失败的。用户登录失败 'WIL2-8EEA651803\管理员'。日志 文件 'c:\documents 和 设置\管理员\我的 文件\视觉工作室 2010\Projects\TestingEF\TestingEF\App_Data\database.ldf' 与主文件不匹配。它 可能来自不同的数据库或 日志可能已重建 以前。
无论我尝试什么,我都无法重新连接 - 我唯一能做的就是重命名数据库和初始目录。我确信之前版本的 MVC 电影数据库教程(在更新为使用紧凑框架之前)可以正常工作,所以我不确定为什么会遇到这些问题。
所以,我的问题是,这是什么原因造成的,我应该怎么做?
接下来,视频中的错误号 1,这是我用来测试的快速 XP VM,它是随机发生的,但这次没有发生,也从未在主机上发生过——所以我很好奇,但是没那么烦恼。尝试构建控制器时,出现以下错误:
"Unable to retrieve metadata for 'TestingEF.Models.blabla'. The provider did not return a ProviderManifestToken string."
知道这是什么吗?
【问题讨论】:
-
我根本不会使用“AttachDbFileName=" 功能 - 将您的数据库文件附加到数据库服务器(可能是您的本地 SQL Server Express)并在那里连接。这个附加数据库文件的东西很奇怪而且很乱,似乎会引起很多问题......(尤其是结合
User Instance=true设置......) -
@marc_s - 我现在正在使用 SQL Server CE 连接字符串和数据源,就像在 MVC 示例中一样,它按预期工作......应用程序完全工作,我可以在同时。 ASP.Net Membership DB 和其他项目似乎与其他连接字符串一起工作得很好......我只是不确定 EF 发生了什么改变,这使它现在变得一团糟,但无论如何,谢谢......你的另一个答案和这个评论确实对此事有更多的了解。
标签: sql-server-express ef-code-first entity-framework-4.1