想要一个强类型的结果从一个加入。netTiers
-
07-07-2019 - |
题
鉴于查询,如:
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 );
}
我想避免一个解决方案,涉及一侧服务器过滤后的查询已经执行;表参与都非常大。
解决方案
创建一个图和使用的强类型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);
还有一个超载方法生成的,支持呼(遗憾的是没有排序依据的条款)。
不隶属于 StackOverflow