ASP.NET Core WebApi Extensions
Zur Erstellung einer ASP.NET Core WebApi bieten sich folgende Erweiterungsmethoden an:
fügt eine Instanz von
SystemUnitOfWorkhinzu um diese per Dependency Injection verwenden zu können
AddWinLineSystemDbUnitOfWork
services.AddWinLineSystemDbUnitOfWork(true, options =>
options.UseConnectionString(connectionStringWinLineSystem)
.UseAutoCreationOption(AutoCreateOption.SchemaAlreadyExists)
.UseEntityTypes(ConnectionHelper.GetPersistentTypesWinLineSystem()));
// Oder den Namen des Connectionstrings aus der IConfiguration angeben
services.AddWinLineSystemDbUnitOfWork(Configuration, "WinLineXPOSystemConnection", true, options =>
options.UseAutoCreationOption(AutoCreateOption.SchemaAlreadyExists)
.UseEntityTypes(ConnectionHelper.GetPersistentTypesWinLineSystem()));
//...
#region Systemdatenbankzugriff für Mandanten-Datenobjekte, die in der Systemdatenbank liegen
var scope = app.ApplicationServices.GetService<IServiceScopeFactory>()?.CreateScope();
var uow = scope?.ServiceProvider.GetService<SystemUnitOfWork>();
SystemUnitOfWork.SessionSystem = uow;
#endregion
Verwendung in einer .NET Minimal Web API
using DevExpress.Xpo;
using DevExpress.Xpo.DB;
using MesoXPO;
using MesoXPO.Helper;
using MesoXPO.Helper.Extensions;
using MesoXPO.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddWinLineSystemDbUnitOfWork(builder.Configuration,"WinLineSystemConnection", true, options =>
options
.UseAutoCreationOption(AutoCreateOption.SchemaAlreadyExists)
.UseEntityTypes(ConnectionHelper.GetPersistentTypesWinLineSystem()));
var app = builder.Build();
app.MapGet("/Artikel", (SystemUnitOfWork systemUnitOfWork, string mandant) =>
{
var mesoObjectLayer = systemUnitOfWork.GetMesoObjectLayer(mandant);
using var dataUow = mesoObjectLayer.GetDataUnitOfWork();
var artikel = dataUow.Query<ArtikelStammdatei>().Select(a => new { a.Artikelnummer, a.Bezeichnung }).ToList();
return Results.Ok(artikel);
});
app.Run();
Last modified: 03 March 2025