The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid
我有一个单实体框架对象,当我将它添加到我的项目中时,
我怀疑您的问题来自这样一个事实:您的解决方案中有多个项目,而包含实体框架内容(包括
您需要将app.config中的连接字符串复制到web.config中,或者将整个文件复制到显示输出的项目中。它是使用框架的条件之一。
当我试图将自定义数据库逻辑放入.dll中以供解决方案中的多个项目使用时,遇到了这个问题。
虽然.dll有正确的app.config文件,但它不起作用。实体框架需要.exe的app.config中的连接信息。把信息复制到那里工作得很好。
Morteza将连接字符串直接粘贴到.edmx的解决方案不适用于我,因为它不允许我在其中粘贴值——尽管这正是我希望能够做到的。
我有一个变化,似乎没有人能涵盖。
我有一个包含两个模型的主项目,以及一个包含单元测试的测试项目。测试项目正在运行,但随后由于操作中提到的错误而停止。我没有对EDMX文件进行任何重命名或移动。
很多建议都提到了比较.config文件,但我的项目根本没有。
最后,我将app.config文件从主项目复制到我的测试项目中,然后它就工作了。我不知道这是正确的步骤,还是在添加其他模型时会出现可维护性问题,但至少现在我的单元测试再次正确运行。
嗨,我有这个问题,它让我发疯了。不管怎样,我终于明白了问题所在。你要做的第一件事就是确保
接下来,转到edmx文件的设计器并打开构造函数。(设计器是EDMX文件的子文件夹)构造函数在基参数中应该有两个参数
1 2 3 4 5 | public DBEntities() : base("name=DBEntities","DBEntities") { this.ContextOptions.LazyLoadingEnabled = true; OnContextCreated(); } |
这是其中之一。第一个参数应该具有
至少那是我的问题,我的问题就这样解决了。我希望你能像这样解决你的问题。
我忘记在连接字符串中添加providername="system.data.entityclient"作为属性。这导致了这个错误,所以
1 |
而不是
1 |
虽然Morteza Manavi的答案确实解决了这个问题,但另一个解决方案是动态构建连接字符串,并将其传递到ObjectContext的构造函数中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public static string CreateConnectionString() { var assemblyPath = Assembly.GetExecutingAssembly().Location; string assemblyLocation = Path.GetDirectoryName(assemblyPath); string dbPath = Path.Combine(assemblyLocation,"YourDatabase.sdf"); var sqlBuilder = new SqlConnectionStringBuilder { DataSource = dbPath }; var entityBuilder = new EntityConnectionStringBuilder { ProviderConnectionString = sqlBuilder.ConnectionString, Provider ="System.Data.SqlServerCe.3.5", Metadata = @"res://*/YourModel.csdl| res://*/YourModel.ssdl| res://*/YourModel.msl" }; return entityBuilder.ToString(); } // Snip... var entityContext = new YourObjectContext(CreateConnectionString()); |
这样就不需要将连接字符串信息复制到启动项目的app.config中,至少在我的情况下,这是不可取的。
我刚刚发现,如果一个应用程序是在IIS中从VS2010创建的,那么会发生两个级别的网站根目录错误。不知道为什么会发生,需要进一步调查。例如,如果您的应用程序在以下路径中:
我所做的就是在我的
在执行上述步骤之前,您将发现无法开始调试。
我们的团队在过去遇到过这个问题,需要一段时间来记住,但这正是我们以前解决这个问题的方法。
我使用的是N'tier架构,也遇到了同样的问题,但这个问题对我有帮助。首先,你有相同的
1 2 3 4 | public YourEntityName(string connString) : base(connString) { } |
我有一个班级图书馆也不想和英孚合作。在我将app.config(或只是connectionString部分)从类libraray复制到exe项目后,连接工作正常!配置文件可能与exe项目位于同一文件夹中,因此找不到。所以在类库项目中使用配置文件时,一定要格外小心!