Définir la propriété de modèle sur un booléen dans Entity Framework

entity-framework

Question

Je commence tout juste à en apprendre un peu sur le cadre de l'entité et n'ai pas beaucoup d'expérience avec les ORM.

Dans ma petite application, j'ai une table, cette table de serveur SQL a plusieurs colonnes, y compris une PrimaryKey (int), un nom (chaîne) et un indicateur (tinyint).

Lorsque j'ai importé cette table dans celle-ci, le type de données des drapeaux a été automatiquement attribué sous forme d'octet. C’est bien, mais le drapeau doit vraiment être un booléen, alors je

  1. Cliqué sur les détails de la cartographie
  2. Sélection de ma propriété de drapeau
  3. Changement du type d'octet en booléen
  4. Reconstruit l'application

J'ai ensuite eu cette erreur:

Erreur 2019: Le mappage de membre spécifié n'est pas valide. Le type 'Edm.Boolean [Nullable = True, DefaultValue =]' du membre 'MyFlag' dans le type 'MyModel.MyItem' n'est pas compatible avec 'SqlServer.tinyint [Nullable = True, DefaultValue =]' du membre 'MyFlag' dans tapez 'MyModel.Store.MyItem'.

Y a-t-il un moyen d'avoir

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

et avez flag save to 1 dans la base de données?

Réponse acceptée

Vous pouvez changer le type de données de MyFlag en bit dans la base de données.


Réponse populaire

Je pense que pour le tinyint vous devrez faire une classe partielle et utiliser un champ séparé qui lira / écrit de manière appropriée dans ce champ. Cependant, le cadre interprétera correctement bit champs de bit comme boolean .

Vous pouvez essayer quelque chose comme ci-dessous en tant que partiel ..

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


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow