2010-05-25 96 views
3

我有一个数据库(SQL 2008 mdf文件),一个带有edmx文件的类库项目,使用向导创建。所以连接字符串也由向导完成。 该项目位于teamfoundation服务器上。连接字符串和实体框架问题

编码时我可以使用所有向导制作的对象。

但是当我运行该程序,我试图使entityContainerName,程序崩溃,并给出了这个错误:

The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid.

在这条线: 公共TestEntities():基地(“NAME = TestEntities” ,“TestEntities”)

我该如何解决这个问题,或者我做错了什么?

回答

5

您需要将连接字符串从类库的配置文件复制到实际运行的应用程序的配置文件中。

1

第一:删除你的模型,第二:删除你的app.config中的所有连接字符串。

然后重新创建模型。这应该将所有内容都恢复为默认值。

+0

+1为快速修复:-) – Stimul8d 2010-10-20 08:17:31

0

好的,如果你想在类库中使用EntityFramework,这意味着你的应用程序不应该知道数据库配置。这是我的观点。我如何解决这个问题。 我们从所有App.Config文件中删除所有连接字符串。 我们使用已创建的连接实例化我们的上下文。

public class ExpertDataBase : DbContext 
{ 
    public DbSet<Operator> Operators { get; set; } 

    public ExpertDataBase() 
     : base(ConnectionFactory.GetCESqlConnection(),true) 
    { 

    } 
} 

public static class ConnectionFactory 
{ 
    public static DbConnection GetCESqlConnection() 
    { 
     DbConnection connection = new SqlCeConnection() 
      { 
       ConnectionString = @"Data Source= ", 
      }; 
     return connection; 
    } 
} 

这是我的实现,它的工作原理没有我在任何xml中输入任何连接字符串。这个connectionFactory可以被重构,所以我可以以某种方式被注入并使用UnityContainer来解析连接类型。 希望这有助于