【问题标题】:How to debug or unit test DataProvider classes in dynamics AX 2012如何在动态 AX 2012 中调试或单元测试 DataProvider 类
【发布时间】:2013-02-01 21:47:12
【问题描述】:

有什么办法可以调试DataProvider类,一个从SRSReportDataProviderBase扩展而来的类,当我的AOS、我的客户端和我的SQL在不同的服务器上分离的时候?

或者有什么方法可以创建单元测试或作业,我可以执行 DataProvider 类?所以我可以调试它? // 这个问题在下面更新就解决了

我尝试创建一个作业以便我可以调试它,但当然它们的依赖项没有被注入。 示例如下:

          static void Job2(Args _args)
          {
           JmgEmplSignedInDP empl;
           ;
            empl = new JmgEmplSignedInDP();
            empl.processReport();
          }

我收到以下错误,因为它没有它们的依赖项:

 JmgEmplSignedInContract object not initialized.
 Stack trace
 (S)\Classes\JmgEmplSignedInDP\processReport - line 12
 (C)\Jobs\Job2 - line 8

有什么方法可以构造一个 DataProvider 类以便我调试它??


更新:

我可以注入类依赖,所以现在我可以调试它。这几乎是一样的。 但是最初的问题还没有回答:

有没有办法调试一个DataProvider类,一个扩展的类 来自 SRSReportDataProviderBase,当我的 AOS、我的客户端和我的 SQL 是 在不同的服务器上分开?

注入 DataProvider 类的依赖项的代码:

    static void Job2(Args _args)
    {
        JmgEmplSignedInDP empl;
        JmgEmplSignedInContract con;
        Query q;
        ;


        empl = new JmgEmplSignedInDP();
        con = new JmgEmplSignedInContract();
        q = new Query(querystr(JmgEmplSignedInQuery));
        empl.parmQuery(q);
        empl.parmDataContract(con);

        empl.processReport();

    }

【问题讨论】:

    标签: reporting-services axapta microsoft-dynamics dynamics-ax-2012 ax


    【解决方案1】:

    出于调试目的,您可能希望更改数据提供程序类以在客户端上运行(在这种情况下,JmgEmplSignedInDP 类属性具有 RunOn=Server)。

    请记住在您的用户设置的“开发”选项卡中删除“在 CIL 中执行业务操作”选项。

    您可以检查通过在作业中多使用几行生成的原始数据:

    static void Job2(Args _args)
    {
        JmgEmplSignedInDP empl;
        JmgEmplSignedInContract con;
        Query q;
        JmgTmpEmplSignedIn tmp;
        ;
    
        empl = new JmgEmplSignedInDP();
        con = new JmgEmplSignedInContract();
        q = new Query(querystr(JmgEmplSignedInQuery));
        empl.parmQuery(q);
        empl.parmDataContract(con);
    
        empl.processReport();
        tmp.setTmpData(empl.getJmgTmpEmplSignedIn());
        while select tmp
        {
            info(strFmt("%1", tmp.EmplName));
        }
    }
    

    【讨论】:

      【解决方案2】:

      取决于代码是否托管,并且取决于您必须使用 Ax 调试或 Visual Studio 调试(将 VS 编辑器附加到 AOS 进程。

      但您可以在此链接上找到有关如何调试报告的信息:Configure the debugger to debug a report data provider class

      【讨论】:

      • 是的,我已经尝试过了。但是在 AOS、SQL 和客户端位于不同服务器的配置中,我无法使其工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      相关资源
      最近更新 更多