Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Коллекции (Cache feat. C#) / 2 сообщений из 2, страница 1 из 1
01.06.2009, 13:24
    #36018846
armin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллекции (Cache feat. C#)
Доброго времени суток! У меня вопрос по работе с коллекцией объектов с кеше класса

Есть мембер:
Collection<STACIONAR.F003> F003Collection = new Collection<STACIONAR.F003>();

Как мне сюда запихнуть коллекцию объектов с STACIONAR.F003 ????....ну типа:
this.F003Collection = this.Manager.GetAll();

шоб патом пройтись по коллекции:
foreach (STACIONAR.F003 entity in F003Collection)
{
// проверка
}

Вобщем вопрос заключается в том как должен выглядеть код метода GetAll() менеджера Manager ????

Может я как то не так мыслю!!???
...
Рейтинг: 0 / 0
01.06.2009, 19:29
    #36019936
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Коллекции (Cache feat. C#)
Не знаю, правильно ли я Вас понял, но попробую ответить.

Есть следующие классы:
Код: plaintext
1.
2.
3.
4.
Class STACIONAR.F003 Extends %Persistent
{
Property b As %Integer;
}
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Include %occStatus
Class test.a [ Abstract ]
{

ClassMethod GetAll1() As %ListOfObjects
{
  #dim res As %ListOfObjects=##class(%ListOfObjects).%New() ;данный синтаксис появился в версии  2009 . 1 
  ;заполняете коллекцию как Вам угодно
  d res.Insert(##class(STACIONAR.F003).%OpenId( 1 ))
  d res.Insert(##class(STACIONAR.F003).%OpenId( 2 ))
  d res.Insert(##class(STACIONAR.F003).%OpenId( 3 ))
  q res
}

ClassMethod GetAll2(Output res As %ListOfObjects) As %Status
{
  set res=##class(%ListOfObjects).%New()
  ;заполняете коллекцию как Вам угодно
  d res.Insert(##class(STACIONAR.F003).%OpenId( 1 ))
  d res.Insert(##class(STACIONAR.F003).%OpenId( 2 ))
  d res.Insert(##class(STACIONAR.F003).%OpenId( 3 ))
  q $$$OK
}

}

Далее необходимо для них сгенерировать прокси-классы (в виде *.cs или *.dll)

C#-код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
using System;
using InterSystems.Data.CacheClient;
using InterSystems.Data.CacheTypes;

namespace Test
{
  class Program
  {
    static void Main()
    {
      using (var cn = new CacheConnection("server=localhost;port=1972;namespace=TEST;uid=_system;pwd=SYS"))
      {
        cn.Open();
        var res1 = test.a.GetAll1(cn);
        foreach (STACIONAR.F003 o in res1)
        {
          Console.WriteLine(o.b);
        }

        Console.WriteLine("-------");

        CacheListOfObjects res2 = null;
        test.a.GetAll2(cn, ref res2);
        foreach (STACIONAR.F003 o in res2)
        {
          Console.WriteLine(o.b);
        }

        Console.WriteLine("OK");
      }
    }
  }
}

Using Collections
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Коллекции (Cache feat. C#) / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]