0

我构建了一个简单的 WPF 应用程序只是为了获得一些经验。它所做的只是在用户单击按钮时从数据库中获取信息。
该应用程序在我的 PC 上运行良好(使用发布选项),但是当我尝试在我的笔记本电脑和我朋友的 PC 上运行它时,该应用程序崩溃的速度与按下按钮一样快。
我 99% 确定它与实体框架有关,我用它来联系数据库(单击按钮时触发的所有功能都是联系并从数据库中检索信息)。

在谷歌中寻找答案后,我发现它可能与 PC 中的 .net 安装或项目引用有关。

但是,我的 PC 和笔记本电脑中的 .net FW 版本是相同的,并且引用都标记为本地复制(仅用于测试!)。

还有什么可能导致这样的问题?我真的已经不知道了...

更新

使用异常,我发现我得到的错误是:
The specified store provider cannot be found in the configuration, or is not valid.

我还通过在 Google 中进行更深入的搜索解决了这个问题。
解决方案可以在下面找到...

快乐编码!

4

3 回答 3

2

它所做的只是在用户单击按钮时从数据库中获取信息。

在您的应用程序中,您正在通过实体框架访问数据库。我只能猜测您与数据库的连接失败,因此您的应用程序正在崩溃。确保为应用程序准备好数据库。

记录您的异常也是一个好主意,以便您可以在应用程序崩溃时查看详细信息。

于 2013-01-04T12:14:33.320 回答
2

尝试在按钮事件处理程序内围绕您的代码使用 Try Catch 块,例如:

        try
        {
            //here your database logic

        }
        catch (Exception ex )
        {
            MessageBox.Show(ex.Message);
            //todo do something usefull
        }

这将为您提供有关应用程序失败原因的信息。

于 2013-01-04T12:23:13.833 回答
1

我终于解决了!

操作方法如下:
1) 确保您的项目引用了 MySql.Data.dll、MySql.Web.dll、MySql.Data.Entity.dll 和 System.Data.Entity.dll。

2) 将以上所有设置为 Copy-Local。

3)将以下行添加到您的App.config文件中:

  <system.data>
  <DbProviderFactories>
    <clear />
    <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient"
    description=".Net Framework Data Provider for MySQL"
    type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, 
    Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </DbProviderFactories>
</system.data>

4) 单击 MySQL.Data 参考,并检查它的版本。选择它后,可以在解决方案资源管理器下方的“属性”窗口中找到它。

5) 将Version=6.4.4.0部分更改为您的 MySql.Data.dll 的版本。我的是 6.5.4.0,这是最新的,但旧版本应该也能正常工作。

另外,我要感谢Ralf de Kleine和所有回答提出/建议异常代码的人。
在异常方便的时候不考虑使用异常,这让我很愚蠢!

于 2013-01-04T13:02:11.917 回答