使用序列
C# 的 Sequence 类用于管理数据库中类型为序列的字段。由于序列实际上是值的向量,因此通过迭代器来访问它们。在 C 应用程序中使用 C 类型 mco_seq_iterator_h 的地方,在 C# 应用程序中 Sequence 类则起到了相同的作用。Sequence 类还提供了一组强大的分析方法,用于对序列执行数学和统计运算。
在 C# 中插入和更新序列
通常,序列数据是使用 C# 的 Sequence 方法 Append() 来插入的。例如,考虑以下模式定义:
[Persistent]
public class Quote {
[Indexable(Unique=true)]
[Dimensiohn(21)]
public String symbol;
[Sequence(Order=SequenceOrder.Ascending)]
public OrderedSequence<uint> Day;
[Sequence()]
UnorderedSequence<float> Price;
};
有了这个类定义,Quote 序列字段 Day 和 Price 可以用如下代码进行填充:
con.StartTransaction(Database.TransactionType.ReadWrite);
Quote q = new Quote();
q.symbol_= "IBM";
con.Insert(q);
q.Day.Append(new uint[] { 1, 2, 4, 5 });
q.Price.Append(new float[] { 10, 20, 40, 50 });
con.CommitTransaction();
有时可能需要向有序的时间序列中插入值。可以使用 Sequence 方法 Insert() 将值插入到现有序列中。例如,以下代码片段搜索具有符号“IBM”的 Quote 对象,然后插入 Day 和 Price 值:
con.StartTransaction(Database.TransactionType.ReadWrite);
Cursor<Quote> cursor = new Cursor<Quote>(con, "symbol");
Quote q = cursor.Find("IBM");
Sequence seq = q.Day.Search(3, SelectBoundary.Exclusive, 0, SelectBoundary.Open);
ulong pos = seq.FirstPosition;
q.Day.Insert(pos, new uint[] { 3u });
q.Price.Insert(pos, new float[] { 30 });
con.CommitTransaction();