Entity framework code first convertir entre la classe boolean et de la colonne de type entier

Je suis en utilisant Entity Framework 5 code first. Ma table a une colonne appelée Active et son type de données est de type int. Les valeurs qui sont stockées dans Active sont 0, 1 et null.

J'ai une classe que j'ai besoin de la carte à cette table.

public class CommandExecutionServer : IEntity
{
     public int Id { get; set; }

     public bool? IsActive { get; set; }
}

Voici mon fichier de configuration. Je suis en train de carte ma propriété booléenne dans ma classe dans le champ entier de la base de données.

class CommandExecutionServerConfiguration : EntityTypeConfiguration<CommandExecutionServer>
{
     internal CommandExecutionServerConfiguration()
     {
          this.ToTable("tblCommandExecutionServers");
          this.Property(x => x.IsActive).HasColumnName("Active").HasColumnType("bit");
     }
}

Cela ne fonctionne pas bien. L'erreur que je reçois est:

The 'IsActive' property on 'CommandExecutionServer' could not be set to a 'Int32' value. You must set this property to a non-null value of type 'Boolean'

J'ai essayé d'ajouter .HasColumnType("bit") et de la pensée qu'il pourrait prendre à mon problème. Comment dois-je faire? Idéalement, je voudrais 0 false 1 true, null la valeur null, et tout autre nombre pour de faux.

Mise à JOUR

Si je change ci-dessus:

this.Property(x => x.IsActive).HasColumnName("Active").HasColumnType("int");

...alors j'obtiens l'erreur suivante:

Member Mapping specified is not valid. The type 'Edm.Boolean[Nullable=True,DefaultValue=]' of member 'IsActive' in type 'MyProject.Infrastructure.EntityFramework.CommandExecutionServer' is not compatible with 'SqlServer.int[Nullable=True,DefaultValue=]' of member 'Active' in type 'CodeFirstDatabaseSchema.CommandExecutionServer'.
avez-vous essayé avec HasColumnType("int") ? Avec le même problème, j'ai défini le type de colonne à peu dans SQL server.
Voir ma mise à jour ci-dessus. Oui je voudrais aussi qu'elle soit à peu, mais ce n'est pas mon serveur, donc je ne peux pas aller modifier les structures de la table 🙂

OriginalL'auteur Brendan Vogt | 2013-03-07