- Formbare Hosts: Server sind definiert nach ihren IP-Adressen
- Formbare Datenbanken: Jede Datenbank wird basierend auf einem Ländercode erstellt
- Unternehmensspezifische Tabellen: Jedes Unternehmen hat seine eigenen Satz von Tabellen (gleicher Aufbau für alle Firmen), die nach dem Buchungskreis benannt werden. Einige Tabellennamen enthalten auch das Jahr.
Hier ist ein Beispiel unseres aktuellen Ansatzes:
Code: Select all
USE dbUnified
GO
DECLARE
@SQL NVARCHAR(MAX) = ''
,@idCompany INT
,@serverERP VARCHAR(50)
,@baseERP VARCHAR(50)
,@codeERP VARCHAR(50)
,@yearERP VARCHAR(50)
SELECT
@serverERP = C.serverERP
,@baseERP = C.baseERP
,@codeERP = C.codeERP
,@yearERP = C.yearERP
FROM
COMPANY C
WHERE
idCompany = @idCompany
-- Dynamic SQL for tables without year
SET @SQL = '
SELECT
*
FROM
['+@serverERP+'].['+@baseERP+'].[dbo].[TABLENAME'+@codeERP+'00]
'
-- Dynamic SQL for tables with year
SET @SQL = '
SELECT
*
FROM
['+@serverERP+'].['+@baseERP+'].[dbo].[TABLENAME'+@codeERP+@yearERP+']
'
EXEC SP_ExecuteSQL @SQL
Hier sind die Herausforderungen, die ich habe Ich stehe vor:
- Dynamische Tabellen- und Spaltenzuordnung
Die Namen der Datenbanktabellen sind nicht intuitiv. Zum Beispiel:- Tabellennamen: PL03{CompanyCode}00 oder SupplyerManager{CompanyCode}{YearERP}.
- Spaltennamen: PL03001, PL03002 usw.
- Tabelle PL03{CompanyCode}00 → Rechnung
- Spalte PL03001 → Lieferantencode, PL03002 → Rechnungsnummer usw.
Mein aktueller DbContext interagiert nur mit festen Tabellen (z. B. dbUnified). Ich muss programmgesteuert eine dynamische Verbindung zu anderen Datenbanken und Tabellen herstellen. - Erwartete Verwendung
Ich hätte gerne eine einzelne DbContext, mit dem ich Daten dynamisch abfragen kann, etwa so:Code: Select all
companyInfoDbContext.Invoice.FirstOrDefault(x => x.supplierCode == "123" && x.invoiceNumber == "321"); // or companyInfoDbContext.Supplier.FirstOrDefault(x => x.supplierCode == "123");
< ul>
[*]Ich habe einen DbContext für dbUnified erstellt, der gut für statische Tabellen funktioniert
[*]Allerdings habe ich nicht herausgefunden, wie ich programmgesteuert mit mehreren Datenbanken umgehen kann
Frage
Wie kann ich eine Lösung in EF Core implementieren? ermöglicht:
- Dynamische Datenbank- und Tabellenauswahl.
Zuordnung von Tabellen-/Spaltennamen zu aussagekräftigen C#-Modellen und -Eigenschaften.< /li>
