【问题标题】:Problem with connectionstring and entityframework连接字符串和实体框架的问题
【发布时间】:2025-12-04 21:00:01
【问题描述】:

我有一个数据库(sql 2008 mdf 文件),一个带有 edmx 文件的类库项目,是使用向导创建的。所以连接字符串也是由向导制作的。 该项目位于 teamfoundation 服务器上。

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

但是当我运行程序并尝试创建 entityContainerName 时,程序崩溃并出现此错误:

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

在这一行: 公共 TestEntities() : base("name=TestEntities", "TestEntities")

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

【问题讨论】:

    标签: c# entity-framework connection-string


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      然后重新创建模型。这应该将所有内容设置回默认值。

      【讨论】:

        【解决方案3】:

        好的,如果您想在类库中使用 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 来解析连接类型。 希望这会有所帮助

        【讨论】: