【问题标题】:Data Entities Connection String Problem数据实体连接字符串问题
【发布时间】:2009-11-11 00:39:17
【问题描述】:

我一定是在某个地方改变了一些东西,但该死的,如果我能弄清楚它是什么。

我有一个 DAL 来处理我对我的 SQL Server 数据库的所有数据访问(这是 DAL 的习惯)。这包括 App.Config 文件中的实体模型、存储库类和连接字符串。

在这篇文章的某个地方,我必须更改了某些内容,现在每次尝试在我的 MVC 应用程序上查看页面时都会遇到以下异常:

指定的命名连接是 在配置中找不到, 不打算与 EntityClient 提供者,或无效。

这是继承<IEnumerable<DataAccess.Layer.Class>> 的任何页面。我错过了什么?

连接字符串:

<add name="JobTrackEntities" 
     connectionString="metadata=res://*/JobTrackDataModel.csdl|res://*/JobTrackDataModel.ssdl|res://*/JobTrackDataModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.\SQLEXPRESS;AttachDbFilename=&quot;C:\Users\Phil\Documents\Visual Studio 2010\Projects\JobTrack\trunk\JobTrack\App_Data\JobTrack.MDF&quot;;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" />

Designer.cs sn-p:

public JobTrackEntities() : 
        base("name=JobTrackEntities", "JobTrackEntities")
{
    this.OnContextCreated();
}
/// <summary>
/// Initialize a new JobTrackEntities object.
/// </summary>
public JobTrackEntities(string connectionString) : 
        base(connectionString, "JobTrackEntities")
{
    this.OnContextCreated();
}
/// <summary>
/// Initialize a new JobTrackEntities object.
/// </summary>
public JobTrackEntities(global::System.Data.EntityClient.EntityConnection connection) : 
        base(connection, "JobTrackEntities")
{
    this.OnContextCreated();
}

【问题讨论】:

  • 你在使用 Linq2SQL dbml 类吗?
  • 不,我使用的是 ADO.Net 实体数据模型。

标签: asp.net-mvc entity-framework exception connection-string


【解决方案1】:

如果您在另一个项目中引用您的 ADO.NET 实体项目,请查看

http://blogs.msdn.com/bindeshv/archive/2009/09/04/referring-ado-net-entity-project-in-a-different-project.aspx

【讨论】:

  • 这是由 ORM 设计器在 Visual Studio 中自动插入的。我的理解是,当 App.Config 文件的 XML 被解析时,它会将这些 HTML 代码转换为它们的字符串等价物。但是,如果其他人可以确认这可能是一个问题,我想知道。
  • 如果您在另一个项目中引用您的 ADO.NET 实体项目,请查看blogs.msdn.com/bindeshv/archive/2009/09/04/…
  • @Rasik。干得好,那个人!我知道这会很简单。您应该将此作为实际答案输入,以便我可以接受它作为解决方案并对其进行投票。
  • 菲尔,根据你的评论,我已经修改了答案。
【解决方案2】:

我注意到,每当我使用 S2L dbml 类时,当我通过接口而不是代码对 dbml 文件进行更改时,我就会遇到同样的问题。

它会重置我的连接字符串,我需要将它改回从 web.config 读取。

不知道这是否是您的问题@Phil。

如果没有,您能否提供更多信息?

【讨论】:

  • 好吧,我查看了,designer.cs 文件仍然引用了正确的连接字符串,并且似乎没有任何其他连接详细信息缓存在任何地方。我将在我的 OP 中添加源代码。
【解决方案3】:

唯一我可以看到可能会导致问题的另一件事是使用硬编码路径。你试过插入\吗?

C:\\Users\\Phil\\Documents\\Visual Studio 2010\\Projects\\JobTrack\\trunk\\JobTrack\\App_Data\\JobTrack.MDF

另外我相信您已经检查并仔细检查了路径是否正确? :)

您是否尝试过获取服务器路径,然后将 app_data\jobtrack.mdf 添加到其中?

您是否尝试过彻底摆脱路径?我问是因为,我忘记了在什么情况下这是正确的,.Net 在附加到数据库时会推断路径和 app_data 文件夹。再次,您需要对此进行研究。

有时运行 ASP.NET 配置实用程序可以修复项目、中断项目或确定问题所在。

【讨论】:

    【解决方案4】:

    我遇到了同样的问题,在尝试了很多不同的方法后,我认为 VS 出了问题,所以我用新项目(实体框架和测试项目)简化了解决方案,从 dll 复制了配置文件进入测试项目,我收到了同样的错误。然后我从测试项目中删除了配置文件,添加了一个新的配置文件,将连接字符串内容复制到配置文件中并且它工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-11
      • 1970-01-01
      • 2011-10-31
      • 1970-01-01
      相关资源
      最近更新 更多