Bestellpositionen


Beim Erstellen einer Zuordnung im ECO sind Sie nicht die Bestellung garantiert, in der die Objekte am Ende des Vereins vorgestellt werden. Aus diesem Grund bietet ECO einen boolescher Wert 'bestellt' Eigenschaft auf Assoziationsenden.

Wenn Sie bestellt festlegen = True in Ihrem Modell und generieren Sie Ihre Datenbank, ECO wird eine zusätzliche Spalte in der Datenbank identifizieren die Reihenfolge der Objekte erstellen.

Ich habe gerade verursachen SalesInvoice / SalesInvoiceLine-Klassen und wählte eine geordnete Zuordnung grundsätzlich zu haben, weil es Industriestandard ist zu üben, um jede Zeile einer Rechnung/Bestellung mit etlichen schreibst, macht es leicht identifizierbar, wenn es diskutieren zu identifizieren.

Es wäre schön gewesen, wenn ich hätte ein abgeleiteten OCL-Attribut mit einem Ausdruck wie folgt verwendet:

Dies. SalesInvoice.lines -> indexOf(self)

aber leider OCL scheint nicht, einen Weg, um den Index eines Objekts in einer Auflistung zu finden, also ich greifen musste zu schreiben ein Code abgeleitetes Attribut haben.

Zuerst im markiert des Attributs als abgeleitet, und keiner DerivationOCL dafür eingeben. Dann habe ich eine öffentliche Methode der Klasse mit der folgenden Signatur

öffentliche Int32-LineNumberDeriveAndSubscribe(ISubscriber reEvaluateSubscriber, ISubscriber resubscribeSubscriber)

Schließlich hatte der Code für das Attribut Folgendes

  1. Abonnieren Sie die SalesInvoice-Eigenschaft
  2. Das Objekt hat keine SalesInvoice,-1 zurück
  3. Abonnieren Sie SalesInvoice.Lines
  4. Zurückgeben des Indexes dieses Objekts in SalesInvoice.Lines

öffentliche Int32-LineNumberDeriveAndSubscribe(ISubscriber reEvaluateSubscriber, ISubscriber resubscribeSubscriber)
{
AsIObject(). Eigenschaften ['SalesInvoice']. SubscribeToValue(resubscribeSubscriber);
Wenn (this. SalesInvoice == Null)
1 zurückgeben;
sonst
{
SalesInvoice.AsIObject(). Eigenschaften ['Linien']. SubscribeToValue(resubscribeSubscriber);
Dies zurück. SalesInvoice.Lines.IndexOf(this) + 1;
}
}

Eine Erklärung des Unterschieds zwischen Werten und erneut abonnieren werfen Sie einen Blick auf diese Artikel.









Bestellpositionen


Bestellpositionen : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


Beim Erstellen einer Zuordnung im ECO sind Sie nicht die Bestellung garantiert, in der die Objekte am Ende des Vereins vorgestellt werden. Aus diesem Grund bietet ECO einen boolescher Wert 'bestellt' Eigenschaft auf Assoziationsenden.

Wenn Sie bestellt festlegen = True in Ihrem Modell und generieren Sie Ihre Datenbank, ECO wird eine zusätzliche Spalte in der Datenbank identifizieren die Reihenfolge der Objekte erstellen.

Ich habe gerade verursachen SalesInvoice / SalesInvoiceLine-Klassen und wählte eine geordnete Zuordnung grundsätzlich zu haben, weil es Industriestandard ist zu üben, um jede Zeile einer Rechnung/Bestellung mit etlichen schreibst, macht es leicht identifizierbar, wenn es diskutieren zu identifizieren.

Es wäre schön gewesen, wenn ich hätte ein abgeleiteten OCL-Attribut mit einem Ausdruck wie folgt verwendet:

Dies. SalesInvoice.lines -> indexOf(self)

aber leider OCL scheint nicht, einen Weg, um den Index eines Objekts in einer Auflistung zu finden, also ich greifen musste zu schreiben ein Code abgeleitetes Attribut haben.

Zuerst im markiert des Attributs als abgeleitet, und keiner DerivationOCL dafür eingeben. Dann habe ich eine öffentliche Methode der Klasse mit der folgenden Signatur

öffentliche Int32-LineNumberDeriveAndSubscribe(ISubscriber reEvaluateSubscriber, ISubscriber resubscribeSubscriber)

Schließlich hatte der Code für das Attribut Folgendes

  1. Abonnieren Sie die SalesInvoice-Eigenschaft
  2. Das Objekt hat keine SalesInvoice,-1 zurück
  3. Abonnieren Sie SalesInvoice.Lines
  4. Zurückgeben des Indexes dieses Objekts in SalesInvoice.Lines

öffentliche Int32-LineNumberDeriveAndSubscribe(ISubscriber reEvaluateSubscriber, ISubscriber resubscribeSubscriber)
{
AsIObject(). Eigenschaften ['SalesInvoice']. SubscribeToValue(resubscribeSubscriber);
Wenn (this. SalesInvoice == Null)
1 zurückgeben;
sonst
{
SalesInvoice.AsIObject(). Eigenschaften ['Linien']. SubscribeToValue(resubscribeSubscriber);
Dies zurück. SalesInvoice.Lines.IndexOf(this) + 1;
}
}

Eine Erklärung des Unterschieds zwischen Werten und erneut abonnieren werfen Sie einen Blick auf diese Artikel.


Bestellpositionen

Bestellpositionen : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Bestellpositionen
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung