Zum Inhalt springen

[Table(Name = ConfigurationManager.AppSettings["pilot"])] Fehler


julia4

Empfohlene Beiträge

Hallo,

ich würde gerne meinen Tabellennamen nicht Hart in den Code schreiben, sondern von

der App.config abrufen.

Wie ihr schon in der Überschrift sehen könnt, versuche ich in meiner Klasse die die Tabelle darstellt

folgendes als Attribut zu schreiben:

using System.Configuration;

using System.Collections.Specialized;


namespace ConsoleReport

{

    [Table(Name = ConfigurationManager.AppSettings["pilot"])]

    public class Pilot

    {


        private int pilotId;

Und in der App.Config habe ich dann meine appSetting per <add> hinzugefügt und mit Werten versehen.

Leider zeigt er nun folgende Fehler:

Ein Attributargument muss ein constant-, typeof- oder Arrayerstellungsausdruck eines Attributparametertyps sein.

Was übersehe ich hier? Kann mir jemand von euch weiterhelfen?

Und btw, welche Daten sollten in die App.config abgespeichert werden? Gibt es da eine Art von Regel?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vorweg: ja das geht schon was du da machst. Unterm Strich ist das aber keine sonderlich gute Idee. Ein Datenbankschema ist etwas, was sich normalerweise nicht ändert. Warum möchtest du diese dynamische Bindung deines Datenbankschemas über ein Config File erreichen? Hast du mal über Entity Framework für deine Datenbankabstraktion nachgedacht?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo SilentDemise,

naja es geht ja eben nicht. Ich bekomme ja eine Fehlermeldung.

Eigentlich habe ich das auf den Ratschlag hin gemacht. Mir wurde gesagt, dass man das so macht...

Wie würde das mit Entity Framework den aussehen? Was wären die Voteile zu meiner Variante?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

Annotationen wie [Table(...)] können keine Dynamischen Werte beinhalten. In deinem Fall muss der Tabellenname fest eingetragen werden.

Im Entity Framework kannst du aber über den Modelbuilder die Tabellennamen noch zur Laufzeit ändern.

Z.B.:

builder.Entity<Person>().Map(m => m.ToTable("RenamedPersons"));

Etwas Doku dazu gibts hier: https://msdn.microsoft.com/en-us/data/jj819164.aspx

Gruß

Jogibaer0411

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...