连接字符串和实体框架的问题

3
我有一个数据库(SQL 2008 MDF文件),一个带有EDMX文件的类库项目,是由向导创建的。因此,连接字符串也是由向导创建的。这个项目在团队基础设施服务器上。
编码时,我可以使用所有由向导创建的对象。
但是,当我运行程序并尝试创建一个entityContainerName时,程序崩溃并显示以下错误:
“指定的命名连接未在配置中找到,不打算与EntityClient提供程序一起使用,或者无效。”
出错代码行如下: public TestEntities() : base("name=TestEntities", "TestEntities")
我该如何解决这个问题或者我做错了什么?
3个回答

5

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


1
首先:删除您的模型,其次:删除您的app.config中的所有连接字符串。
然后重新创建模型。这应该将一切都恢复到默认设置。

0

如果你想在一个类库中使用EntityFramework,那么你的应用程序就不应该知道DB的配置。这是我的观点。我是如何解决这个问题的。 我们从所有的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来解析连接类型。 希望这可以帮助到您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接