代码之家  ›  专栏  ›  技术社区  ›  Bob Kaufman

希望从JOIN.netTiers中获得强类型结果

  •  1
  • Bob Kaufman  · 技术社区  · 16 年前

    给出如下查询:

    SELECT table1.field1 FirstField, table2.field2 SecondField
        FROM table1
        INNER JOIN table2 ON table1.FK = table2.PK
        WHERE table1.somefield = 'somevalue';
    

    我的目标是使用.netTiers返回强类型结果集。我假设我不能使用视图,因为 WHERE DataSet DataReader .

    我想我只是缺少了一个概念。我想说清楚的是,我希望最终能够写出这样的东西:

    TList <some-entity-name> entityList = DataRepository.SomeProvider.Get( "somevalue" );
    
    foreach ( some-entity-name entity in entityList ) {
        DoSomethingWith( entity.FirstField, entity.SecondField );
    }
    

    我希望避免在执行查询后使用服务器端过滤器的解决方案;涉及的表格非常大。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Sergey Sergey    16 年前

    创建视图并使用强类型ParameterBuilder对象过滤特定列上的视图。我不太记得这个物体在哪一层。

    以下是您将如何使用它:

    MyViewParameterBuilder builder = new MyViewParameterBuilder();
    builder.AppendEquals(TableColumn.Column, "value");
    DataRepository.MyViewEntityProvider.Find(builder.GetParameters());
    

    第二个选项是尝试生成存储过程,但前提是存储过程的结果集与数据库中某个表的架构匹配。否则,网络层将不知道如何针对它生成。你可以阅读更多关于这方面的内容 here

        2
  •  0
  •   Rebecca    11 年前

    http://benpowell.org/paging-and-sorting-in-a-nettiers-custom-stored-procedure/

    如果您有这样的场景:

    • 客户端(PK客户端ID)

    只要您有正确的外键设置,.NetTiers将为您提供适当的方法:

    AccountService s = new AccountService();
    TList<Account> accountCollection = s.GetByClientIdFromClientAccount(1);