MESO-XPO 1.0 Help

Herstellen einer Datenverbindung

In diesem Abschnitt erfährst Du, wie Du eine Verbindung zu den WinLine-Datenobjekten herstellen kannst und wie die Mandanten- und Jahresfilterung durch das MesoXPO-Framework automatisch erfolgt.

Allgemein

Der einfachste Weg, um auf die WinLine-Datenbank zuzugreifen, besteht darin:

  1. DataLayer für die Systemdatenbank erzeugen

  2. Eine SystemUnitOfWork mit diesem DataLayer instanzieren

  3. Über die Hilfsmethode GetMesoObjectLayer einen MesoObjectLayer erhalten, der für den gewünschten Mandanten und das zugehörige Wirtschaftsjahr automatisch filtert

var connectionStringSystem = MSSqlConnectionProvider .GetConnectionString( "DEMOSRV01\\DEMO", "meso", "***********", "CWLSYSTEM2023" ); // Verbindung zur SystemDatenbank herstellen DataLayerSystem = DataLayerManager.CreateDataLayer( connectionStringSystem, systemDb: true ); SystemUnitOfWork = new SystemUnitOfWork(DataLayerSystem); // MesoObjectLayer für gewünschten Mandanten // (automatische Filterung auf Mandant und aktuelles Wirtschaftsjahr) MesoObjectLayer = SystemUnitOfWork.GetMesoObjectLayer("500M");

Verwenden des MesoObjectLayer

Der MesoObjectLayer übernimmt für Dich die automatische Filterung aller Datenabfragen auf den jeweils angegebenen:

  • Mandanten (z. B. "500M")

  • Wirtschaftsjahr (entweder das aktuelle oder ein angegebenes)

Die BaseYear-Eigenschaft wird bei allen relevanten Klassen berücksichtigt, die das Attribut IsBaseYearRelevantTable aufweisen.

Beispielabfragen Sobald Du einen MesoObjectLayer hast, kannst Du über diesen UnitOfWorks oder Sessions erzeugen. Ein typischer Workflow könnte so aussehen:

using var uow = MesoObjectLayer.GetDataUnitOfWork(); // Alle Artikel vom Typ Hauptartikel var artikelMitLager = new XPQuery<ArtikelStammdatei>(uow) .Where(a => a.Lagereinstellungen.Artikeltyp == ProductTypeEnum.ProductWithStock); // Alternativ um ein Sesssion-Objekt zu verwenden // var sessionMeso = new Session(MesoObjectLayer)

Mandanten- oder wirtschaftsjahresübergreifende DataLayer

Möchtest Du keine automatische Filterung verwenden (z. B. um mehrere Mandanten gleichzeitig zu verarbeiten oder ganz frei auf die Daten zuzugreifen), kannst Du stattdessen ein allgemeines IDataLayer erstellen:

var dataLayer = DataLayerManager.CreateDataLayer(connectionString); var uow = new UnitOfWork(dataLayer); // Verkaufsstatistik für Konto 10001... var verkaufsstatistik = new XPQuery<Statistik>(uow) .Where(s => s.Kontonummer == "10001");

Zusammenfassung

  • Empfohlener Ansatz: Verwende das MesoObjectLayer über die Systemdatenbank, um automatisch den passenden Mandanten und das gewünschte Wirtschaftsjahr zu filtern.

  • Manueller Ansatz: Erstelle ein eigenes IDataLayer, falls Du mandanten- oder jahresübergreifende Szenarien abdecken möchtest.

Last modified: 03 March 2025