【问题标题】:ASP.NET Wepapplication with on-disk database - how?带有磁盘数据库的 ASP.NET Wepapplication - 如何?
【发布时间】:2013-06-25 22:13:57
【问题描述】:

如何将 .mdf 文件(在 VS2012 中称为 SQL Server 数据库)用于实体框架?

我收到此错误消息:

Invalid value for key 'attachdbfilename'.

这是我的连接字符串:

<add name="DbContainer" connectionString="metadata=res://*/Database.Db.csdl|res://*/Database.Db.ssdl|res://*/Database.Db.msl;provider=System.Data.SqlClient;provider connection string="data source=(LocalDb)\v11.0;initial catalog=DataContext;Integrated Security=True;AttachDBFilename=|DataDirectory|\DataContext.mdf;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />.

在 Global.asax.cs 的 Application_Start 中,我为 |DataDirectory| 设置了正确的路径,如下所示:

string newPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data");

AppDomain.CurrentDomain.SetData("DataDirectory", newPath);

你们中有人知道如何进行这项工作吗?

顺便说一句。它在本地运行我的 Web 应用程序(即调试)时有效,但在发布到我的在线域时无效。

【问题讨论】:

  • 您的在线域上的目录路径是什么?它接受“\”吗?您是否尝试过使用指定的完整路径进行测试?
  • 类似于:D:\home\krbak\[projectname]\App_Data。我已尝试使用连接字符串中指定的此路径。如果我通过服务器浏览器浏览到 MDF 的连接,然后右键单击,选择“管理连接”,我会看到 MDF 文件的绝对路径,而不是相对路径。

标签: asp.net asp.net-mvc entity-framework asp.net-mvc-4 localdb


【解决方案1】:

如果它在本地工作但不能在线,则问题出在您的连接字符串的data source 部分。如果您想在运行时而不是通过管理工作室附加您的数据库,请删除 initial catalig 部分。因此,将其更改为以下内容:

<add name="DbContainer" 
  connectionString="metadata=res://*/Database.Db.csdl|res://*/Database.Db.ssdl
  |res://*/Database.Db.msl;provider=System.Data.SqlClient;
  provider connection string=&quot;data source=RemoteServerInstance;      
  Integrated Security=True;AttachDBFilename=|DataDirectory|\DataContext.mdf;
  MultipleActiveResultSets=True;App=EntityFramework&quot;"
  providerName="System.Data.EntityClient" />

【讨论】:

    猜你喜欢
    • 2011-07-13
    • 2011-05-06
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    相关资源
    最近更新 更多