Sequência não contém nenhum elemento correspondente – EntityFramework

Estou usando o EF 6.1.0 e estava criando um serviço WCF.

Primeiro, criei uma biblioteca de classs contendo minhas entidades, mapeadores e contexto para inicializar a EF. Eu também criei uma class contendo uma instanciação do contexto e tenho este código:

public IQueryable GetAll() { return context.[Entity].AsQueryable(); } 

Por outro lado, eu criei um serviço WCF no mesmo projeto e chama a function GetAll () no arquivo.svc como este:

 public List GetList() { [iObject] repository = new [Object](new Context()); return repository.GetAll().ToList(); } 

O projeto está construindo. Chego a verificar a configuração e está no DB certo. No entanto, database e tabelas que é supostamente criado não existem e um erro “Seqüência não contém nenhum elemento correspondente” aparece no retorno.

Se este é um confuso você pode me apontar algum link de serviços WCF usando Code First Entity Framework.

    Eu tinha um bug onde recebi um System.InvalidOperationException com a mensagem Sequence contains no matching element porque eu tinha um valor de seqüência incorreto sendo passado para .HasColumnType() na minha configuração de tabela.

    Eu apenas experimentei o mesmo problema. O primeiro código do assistente de database gerou uma das colunas como [Column(TypeName = "date")] .

    Chamar .saveChanges() resultou na Sequence contains no elements .

    Depois de alterar a coluna definida para [DataType(DataType.DateTime)] , funcionou conforme o esperado.

    Eu também estava recebendo o mesmo erro ao adicionar migration ou atualização de database.

    O motivo foi que eu estava usando o tipo errado de coluna

     [Column("ImageType", TypeName = "varchar(20)")] public string ImageType { get; set; } 

    Mas quando eu removi 20 do varchar ele começou a trabalhar para mim

     [Column("ImageType", TypeName = "varchar")] public string ImageType { get; set; } 

    O Entity Framework lança essa exceção se o tipo de coluna for inválido. Por exemplo:

     // This will throw an error. There is no such type name. [Column(TypeName = "Invalid")] public string Column1 { get; set; } // Works. [Column(TypeName = "varchar")] public string Column1 { get; set; } 

    Veja estes exemplos:

    • Exemplo 1
    • Exemplo 2
    • Outros exemplos nos comentários.

    Sim. Me pegou também porque em um momento de distração eu coloquei o literal long lá dentro para uma coluna bigint ou seja, HasColumnType("long") – você pode acreditar ?! Que palhaço!

    Geradores geralmente criam suas classs EF corretamente, mas se você não for capaz ou não quiser usar uma, então você pode usar uma class estática com alguns campos de strings estáticos nelas para que você possa intellisense muito bem:

     public static class DatabaseColumnTypes { ///  /// Use this for 'boolean' values. ///  public static string BitColumn = "bit"; ///  /// Use this for 'byte' values. ///  public static string TinyIntColumn = "tinyint"; ///  /// Use this for 'long' values. ///  public static string BigIntColumn = "bigint"; ///  /// Use this for 'string' values. ///  public static string VarcharColumn = "varchar"; // etc } 

    Agora você pode fazer HasColumnType( DatabaseColumnTypes.BigIntColumn )

    Eu sei, eu sei, isso é preguiçoso, eu deveria lembrar desses tipos, mas de vez em quando eu me vejo no Stack Overflow procurando isso e isso só economiza tempo …

    Para mim esta mensagem foi por causa do mal-entendido para o atributo TypeName no Column.

    Atributo da Coluna: [Column (nome da string, Propriedades: [Order = int], [TypeName = string])

    name: nome de uma coluna em uma tabela do database.
    Order: ordem de uma coluna, começando com zero index. (Opcional)
    TypeName: tipo de dados de uma coluna. (Opcional)

    Este TypeName deve ser apenas o nome do tipo e não deve include precisão ou escala ou comprimento e qualquer outra coisa. Por exemplo, seguindo irá causar um erro

    [Column (TypeName = “nvarchar (600)”)]

    enquanto abaixo de um vai funcionar bem no entanto você pode querer ter tamanho específico da coluna e para que uma maneira é usar API fluente

    [Column (TypeName = “nvarchar”)]

    Para mim, ajudou quando o projeto de class foi comutado para Set as startup project

    Recebi a mesma mensagem de erro quando renomei meu modelo de membro para Student e tinha uma propriedade de navegação em outra class como:

     public IList Members { get; set; } 

    Eu mudei isso para:

     public IList Students { get; set; } 

    e o problema foi resolvido!

    Eu recebi este erro ao definir a Herança Tabela-Por-Tipo com a API Fluent (como uma class derivada de EntityTypeConfiguration ) e redefinir erroneamente o campo que já estava definido na configuração da class base (e ambos eram exatamente os mesmos). Eu estava usando o pacote nuget EntityFramework 6.2.0.