Код структуры сущности сначала преобразуется между логическим классом и целым числом столбца
я используюEntity Framework 5 code first
, В моей таблице есть столбецActive
и его тип данных имеет типint
, Значения, которые хранятся в Active:0
1
а также .null
У меня есть класс, который мне нужно сопоставить с этой таблицей.
public class CommandExecutionServer : IEntity
{
public int Id { get; set; }
public bool? IsActive { get; set; }
}
Вот мой файл конфигурации. Я пытаюсь сопоставить свое логическое свойство в моем классе с целочисленным полем в базе данных.
class CommandExecutionServerConfiguration : EntityTypeConfiguration
{
internal CommandExecutionServerConfiguration()
{
this.ToTable("tblCommandExecutionServers");
this.Property(x => x.IsActive).HasColumnName("Active").HasColumnType("bit");
}
}
Это не работает хорошо. Ошибка, которую я получаю:
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'
Я пытался добавить.HasColumnType("bit")
и подумал, что это может занять мою проблему. Как мне это сделать? В идеале я хотел бы, чтобы 0 было ложным, 1 - истинным, ноль - нулевым, а любое другое число - ложным.
ОБНОВИТЬ
Если я изменю вышеизложенное на:
this.Property(x => x.IsActive).HasColumnName("Active").HasColumnType("int");
... тогда я получаю следующую ошибку:
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'.