首页 > 解决方案 > “在 App.Config 中找不到连接字符串‘RgaAppDBEntities’”阻止我添加 WinForm 用户控件

问题描述

我正在使用 Entity Framework 6 和 DevExpress UI 组件创建一个 WinForms 应用程序。我已经成功开发了这个应用程序大约 2 个月,今天我需要在主窗口中添加一个新的用户控件。令我惊讶的是,主窗口的设计者显示了一个错误屏幕,其中有几个例外。我点击了“忽略并继续”(这可能是我问题的根源)。

所以这是问题所在:单击忽略并继续后,显然设计者删除了我的两个自定义用户控件(这是迄今为止已实现实体框架的两个控件)。当我尝试将用户控件添加回设计器时, 会弹出一个错误,指出它无法创建组件,并且在应用程序配置文件中找不到连接字符串。

我已经确定无法添加用户控件的原因是导致问题的两个用户控件创建了一个“RgaAppDBEntities”实例,这是我正在使用的数据库模型。

我的数据模型在一个单独的类库项目中。类库和 WinForms 项目中的 App.Config 文件具有:

<connectionStrings>
    <add name="RgaAppDBEntities" connectionString="sensitive connection string information generated from database first model" providerName="System.Data.EntityClient" />
</connectionStrings>

Db Context 类构造函数如下所示:

public RgaAppDBEntities()
        : base("name=RgaAppDBEntities")
    {
    }

去掉“name=”会导致 UnintentionalCodeFirstException(),这告诉我,由于某种原因,WinForms 项目实际上无法在配置文件中找到名为 RgaAppDBEntities 的连接字符串,而我没有想法。

最后,我完全摆脱了数据模型并重新生成了整个模型,并重新实现了我需要的一切,但它仍然无法在 app.config 文件中找到连接字符串。

这个问题的原因可能是什么,我该如何解决?

解决方案

GertArnold 的建议是正确的:当您尝试让 EntityFramework 在设计时读取 app.config 时,它会抱怨并且不允许您通过异常。

在我的例子中,我在每个控件的视图模型的构造函数中初始化了数据库上下文,这当然是在运行时初始化的。作为一种解决方法,我刚刚创建了一个方法来初始化只能在运行时调用的数据库上下文。奇迹般有效。

标签: c#winformsentity-framework-6

解决方案


推荐阅读