Wie können Sie das Entity Framework zwingen, Zeichenfolgen anstelle von char für die Spalten CHAR, NCHAR, VARCHAR (1) und NVARCHAR (1) zu verwenden?

  • Wir haben eine Datenbanktabelle, die derzeit eine Spalte VARCHAR(1) hat.

    Wir nehmen gelegentlich Änderungen an dieser Tabelle vor, sodass das Objekt neu erstellt werden muss in der DBML-Datei. Unser entsprechender Code möchte auf diesen Wert als Zeichenfolge verweisen, aber LINQ-to-SQL geht immer davon aus, dass es sich um ein Zeichen handelt, das ein Wert annehmen kann. Um dies zu umgehen, müssen Sie die Spalte manuell als String im DBML-Designer festlegen. Ich möchte verhindern, dass unsere Entwickler für diese Feldtypen versehentlich char statt string verwenden.

    Gibt es eine Möglichkeit, Entity Framework zu zwingen, String für alle CHAR/NCHAR/VARCHAR(1)/NVARCHAR(1) zu übernehmen? Felder?

    Wenn dies nicht möglich ist, ändern wir wahrscheinlich die Spalte in VARCHAR(2) oder ähnliches. Was immer wir entscheiden, wir werden uns auf mehrere Tabellen ausbreiten, da mehrere Tabellen diese Art von Spaltendefinition verwenden. Die schiere Anzahl von Spalten, die wir ändern müssten, hindert uns derzeit daran, dies allumfassend zu implementieren.

    EDIT: Geändert " Entity Framework "bis" LINQ-to-SQL "

    22 November 2011
    JackAce
1 answer
  • Ich hatte ein ähnliches Problem. Ich habe das Problem gelöst, indem ich die POCO T4-Vorlagen verwendete und die Vorlage so modifizierte, dass eine zusätzliche Eigenschaft ausgegeben wird, die einige Prüfungen vornimmt, bevor die ursprüngliche Eigenschaft festgelegt wird. Die T4-Vorlage könnte die Felder identifizieren, für die dies erforderlich ist, indem eine Namenskonvention verwendet wird. Hier ist ein Link zu meinem Blog, in dem ich etwas ausführlicher beschreibe, wie das funktioniert. http://nigelfindlater.blogspot.com/2010/04/implementationof-custom-typeswithin.html

    Ich denke, eine Alternative Der Ansatz könnte darin bestehen, eine partielle Klasse zu erstellen, die die zusätzliche Eigenschaft auf ähnliche Weise hinzufügt.

    Ich hoffe, das hilft ...

    22 November 2011
    Nigel Findlater