Pergunta

Eu estou testando andaime com o Entity Framework em Asp.Net MVC 4 (seguindo este artigo).Eu fazê-lo funcionar bem, exceto que, embora o meu domínio permite que o objecto nulo em um campo e o campo do banco de dados permite null recebo a mensagem de erro:

Não é possível inserir o valor NULL na coluna 'IsSuccessful', tabela 'MyTestProject.Persistência.TestContext.dbo.Previsão";a coluna não permite valores nulos.Falha de ATUALIZAÇÃO.A instrução foi finalizada.

Meu objeto de domínio parecido com este:

public class Prediction 
{
    [Key]
    public int Id { get; set; }
    [Required]
    public string Title { get; set; }
    [Required]
    public string Description { get; set; }
    public bool? IsSuccessful { get; set; }
}

A página da web gerada mostra IsSuccessful como uma caixa de lista pendente com opções NotSet, Verdadeiro e Falso.No banco de dados da coluna IsSuccessful permite nulo.Ainda recebo a mensagem de erro.Tudo funciona bem, se eu escolher Verdadeiro ou Falso (ele é salvo corretamente no banco de dados), mas não quando eu selecionar NotSet.

Certamente deve haver uma maneira de contornar isso?

Alguns detalhes:

  • O Visual Studio 2012 RC
  • Asp.Net MVC 4
  • EntityFramework.dll versão 5.0.0.0
Foi útil?

Solução

Essa mensagem de erro, parece que está vindo diretamente do SQL Server.Se o servidor diz que a coluna é não nulo, então a coluna não é nulo.Ele sabe melhor do que ninguém, depois de tudo.

Agudos verificar que a coluna é realmente nulo no banco de dados.Considere também:

  • são, talvez, olhando para um banco de dados diferente, com um pouco diferente do esquema?i.e.um que não teve o correto scripts DDL aplicada (realmente feito facilmente)
  • são, talvez, olhando para um diferente objeto na mesma base de dados?Em particular, são, talvez, olhando para Halvard.Prediction, onde-como o código está olhando dbo.Prediction ?
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top