Setzen Sie die Modelleigenschaft in Entity Framework auf boolean

entity-framework

Frage

Ich fange gerade an, etwas über das Entity-Framework zu lernen und habe nicht viel Erfahrung mit ORMs.

In meiner kleinen App habe ich eine Tabelle. Diese SQL Server-Tabelle hat mehrere Spalten, darunter einen PrimaryKey (int) einen Namen (String) und ein Flag (Tinyint).

Beim Importieren dieser Tabelle wurde der Datentyp der Flags automatisch als Byte zugewiesen. Das ist in Ordnung, aber die Flagge sollte wirklich ein Boolean sein, also ich

  1. Klicken Sie auf die Zuordnungsdetails
  2. Ausgewählte meine Flag-Eigenschaft
  3. Typ wurde von Byte in Boolean geändert
  4. Die Anwendung neu erstellen

Ich habe dann diesen Fehler bekommen:

Fehler 2019: Die angegebene Mitgliederzuordnung ist ungültig. Der Typ 'Edm.Boolean [Nullable = True, DefaultValue =]' des Mitglieds 'MyFlag' vom Typ 'MyModel.MyItem' ist nicht kompatibel mit 'SqlServer.tinyint [Nullable = True, DefaultValue =]' des Mitglieds 'MyFlag' in Geben Sie 'MyModel.Store.MyItem' ein.

Gibt es einen Weg zu haben?

MyItem item = new MyItem();
item.Flag = true;

und Flag auf 1 in der Datenbank speichern?

Akzeptierte Antwort

Sie könnten den Datentyp von MyFlag in ein bit in der Datenbank ändern.


Beliebte Antwort

Ich denke, für die tinyint Sie eine tinyint machen und ein separates Feld verwenden, das dieses Feld entsprechend liest / schreibt. Das Framework interpretiert bit jedoch korrekt als boolean .

Sie könnten so etwas wie unten als Teil versuchen.

public partial class MyItem
{
    public bool FlagBool
    {
        get { return Flag == 1; }
        set { Flag = value ? 1 : 0; }
    }
}


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum