【问题标题】:Unable to create object context无法创建对象上下文
【发布时间】:2010-02-10 01:52:06
【问题描述】:

在 ASP.NET MVC 中使用实体框架时出现Unable to create object context 错误。

背景

每次我向控制器POST 时,我都没有得到回复。我尝试直接进入控制器/Data/GetAll的方法,收到这个错误:

错误

指定的命名连接是 在配置中找不到, 不打算与 EntityClient 提供程序,或无效。 描述:未处理的异常 在执行过程中发生 当前的网络请求。请查看 堆栈跟踪以获取有关的更多信息 错误及其起源 代码。

异常详情: System.ArgumentException: 指定的命名连接是 在配置中找不到,不是 旨在与 EntityClient 提供者,或无效。

抛出异常的代码片段:

public class TrackItContextCreator {
    public ObjectContext Create() {
        ObjectContext context = new ObjectContext("name=TrackItDBEntities");

        context.DefaultContainerName = "TrackItDBEntities";

        return context;
    }
}

Web.config

<add name="TrackItDBEntities" connectionString="metadata=res://*
/EntityFramework.TrackItDBModel.csdl|res://*/EntityFramework.TrackItDBModel.ssdl|res:
//*/EntityFramework.TrackItDBModel.msl;provider=System.Data.SqlClient;provider
 connection string=&quot;Data Source=host;User ID=myuseracc;Password=******;
MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

我可能会错过什么?

【问题讨论】:

  • 我的第一个猜测似乎是错误的。下一个问题:模型是否在单独的组件中?
  • 是的......该死的角色要求哈哈

标签: c# .net asp.net-mvc entity-framework


【解决方案1】:

从cmets,我想我知道问题出在哪里了。

如果模型在单独的程序集中,则基本上必须确保在使用模型的每个程序集的app.config/web.config 中指定了连接字符串。我猜你只在模型项目中有它。

另一个例子请参见this question,以及this thread on MSDN。涉及模型的两个类似问题都在单独的项目/程序集中。我 99% 确定这与您的问题有关。

【讨论】:

  • @Downvoter:我进行了编辑以澄清,但如果您因为认为这是错误的答案而投了反对票,我建议您看这里:stackoverflow.com/questions/2158853/…
  • 应该不会影响的,我还有一个项目使用了 "它有效。这是我创建实体框架时自动生成的。
  • 嗯,你是对的,我在主程序集的 web.config 中丢失了它,但其他的都没有 app.config/web.config 文件......问题仍然没有固定的。有什么想法吗?
  • +1。这是正确的答案。您必须在 executing 程序集的配置文件中放置一个正确命名的实体框架连接字符串,或者在代码中提供一个连接字符串。
  • @Matt:如果您仍然遇到完全相同的问题,那么配置中可能有一些不正确的地方。如果您尝试通过ConfigurationManager.ConnectionStrings["TrackItDBEntities"] 手动获取连接字符串会怎样?
【解决方案2】:

如果您使用类库开发 Web 应用程序,您应该将数据库的连接字符串添加到 Web.Config 和 App.Config。

【讨论】:

    猜你喜欢
    • 2021-08-15
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 2013-08-10
    • 2015-03-19
    • 1970-01-01
    相关资源
    最近更新 更多