【问题标题】:Need help debugging: Having trouble getting data to Silverlight App through RIA Services, Entity Framework, MySQL需要帮助调试:无法通过 RIA 服务、实体框架、MySQL 向 Silverlight 应用程序获取数据
【发布时间】:2009-10-01 14:18:39
【问题描述】:

我正在尝试构建一个 Silverlight 应用程序来访问和呈现来自 MySQL 数据库的数据。我正在尝试使用实体框架对 MySQL 数据和 RIA 服务进行建模,以通过 EF 将数据提供给 Silverlight。

我的 Silverlight 应用程序在数据网格中显示了正确的列,但没有显示数据 (alternate link to image):

当我查看 DomainService 文件(用于 RIA 服务)时,我看到:

    public IQueryable<saw_order> GetSaw_order(int intOrder)
    {
        return this.Context.saw_order
            .Where(o => o.Wo == intOrder);
    }

为了测试这一步,我修改了 LINQ 以删除 where,所以我只有 return this.Context.saw_order;。当我这样做时,我能够检查 MySQL 服务器并验证查询实际上已发送到 MySQL 服务器,并且 MySQL 服务器正在“写入 NET”并尝试发回数据。从我的测试机器发送的查询是有效的。

从我上面的测试来看,数据似乎被正确地发送到 MySQL 服务器,但在返回时丢失了。我现在的困难是试图找出数据在链中的哪个位置(实体框架到 RIA 服务到 Silverlight 客户端)丢失了,我不知道如何在不同的点进行调试。

例如,我可以通过哪些其他方式测试 Entity Framework 以确保 EF 不是问题?我如何测试 RIA 服务?我应该在 Silverlight 客户端上进行测试吗?

我正在努力学习 C#,但不确定要测试什么。我如何“捕捉” DomainService 中的返回,以便进行一些基本的调试。

非常感谢任何帮助。

【问题讨论】:

  • 事实证明,很多混乱来自 MySQL 连接器使用日期和时间戳的方式。我尝试使用没有日期和时间戳的表格,效果很好。

标签: c# mysql silverlight entity-framework wcf-ria-services


【解决方案1】:

像这样更改您的代码:

var qry = this.Context.saw_order.Where(o => o.Wo == intOrder);
return qry;

如果你在返回时设置断点,那么你可以尝试在即时窗口中执行查询,看看它是否正确执行。

【讨论】:

  • 这在调试时很有帮助。现在,当我将鼠标悬停在 qry 变量上时,我遇到了一些有趣的错误。每次我悬停时它们似乎都会改变,但其中很多似乎是数据错误。稍后我会发布更多信息。
【解决方案2】:

从我上面的测试看来,数据 正确发送到 MySQL 服务器,但在其某处丢失 返回。我现在的困难是试图 找出链中的位置(实体 RIA 服务框架 Silverlight 客户端)数据是 迷路了,我不知道该怎么做 在不同的点调试它。

我使用以下工具: Linqpad:这是为了测试我的 linq to sql 语句。它非常简单易用。

Fiddler:Fiddler 会告诉你服务器和客户端之间发生了什么。

【讨论】:

  • 使用 Fiddler 的好主意。我需要这样做。但是,Linqpad 不支持连接到 MySQL 的实体。它们仅支持 MS SQL Server(可能还有 SQL lite 或 SQL Server Express)。
  • 当我安装 fiddler 时,我必须在我的 .web 文件中设置启动字符串以使用 127.0.0.1。而不是本地主机。如果您遇到这种情况,这可能会为您节省一些时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 2019-07-18
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多