鉴于查询,如:

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

我的目标是返回的一个强类型的结果集中使用。netTiers.我想我不能使用视,因为 WHERE 条款需要参数,它们不能传递到一个图。存储程序可以通过'。'参数,但返回弱类型 DataSetDataReader.

我想我只是缺少一个概念在这里。只是要清楚,有什么我想结束了是能够编写这样的东西:

TList <some-entity-name> entityList = DataRepository.SomeProvider.Get( "somevalue" );

foreach ( some-entity-name entity in entityList ) {
    DoSomethingWith( entity.FirstField, entity.SecondField );
}

我想避免一个解决方案,涉及一侧服务器过滤后的查询已经执行;表参与都非常大。

有帮助吗?

解决方案

创建一个图和使用的强类型ParameterBuilder目筛选视具体列。我不太记得什么样的层这个目的。

这是你将如何使用它:

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

我可能是错的,但我不相信净层实际上'筛选'的TList/VList对象的方法上,这是什么名称的对象的建议。建设者产生那里有条款和nettiers运行查询对你的数据库使用这种条款。

你的2个选择是尝试产生一个存储程序,但如果仅果集中你的存储过程相匹配的架构的一个表中的数据库。否则,净级会不知道如何生成反对。你可以阅读更多 在这里,

其他提示

如果你想要一个TList收集有加入你们将需要创建一个自定义存储程序。解决方案: http://benpowell.org/paging-and-sorting-in-a-nettiers-custom-stored-procedure/

如果你有的情况是这样的:

  • 帐户(PK AccountId)
  • 客户(PK ClientId)
  • ClientAccount(PK ClientId,AccountId)

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

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

还有一个超载方法生成的,支持呼(遗憾的是没有排序依据的条款)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top