secuencia mas elementos elemento contiene coincidente .net entity-framework ef-code-first ado.net-entity-data-model edmx

.net - mas - Error de migración de Entity Framework: la secuencia no contiene elementos



la secuencia no contiene elementos c# (6)

Este problema se me ocurre cuando intento definir el tipo y tamaño de una columna con DataAnnotations .

MALO:

[Column(TypeName="VARCHAR(254)")] public string ColumnName { get; set; }

DE ACUERDO:

[MaxLength(254)] [Column(TypeName="VARCHAR")] public string ColumnName { get; set; }

comando: add-migration blahblah -verbose
error: la secuencia no contiene elementos

Hice algunas cosas antes de recibir este error. Hice un cambio en mi modelo de código primero, pero todavía no add-migration . Luego agregué un modelo EDMX para jugar con una idea visualmente. Me di cuenta de que el modelo EDMX estaba jugando con mi código, así que lo eliminé. Intenté ejecutar add-migration y obtuve "La secuencia no contiene elementos". Actualicé a EF 5 y desinstalé el paquete de Migraciones anterior, excepto por mis configuraciones. Luego volví a intentar add-migration y aún obtengo "La secuencia no contiene elementos". A continuación se muestra el resto del error.

System.InvalidOperationException: Sequence contains no elements at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source) at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.GetQualifiedTableName(XDocument model, String entitySetName) at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.<FindRenamedIndependentAssociationColumns>b__ba(<>f__AnonymousType16`2 <>h__TransparentIdentifieraa) at System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSource x) at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at System.Linq.Enumerable.<ConcatIterator>d__71`1.MoveNext() at System.Linq.Enumerable.<ConcatIterator>d__71`1.MoveNext() at System.Linq.Enumerable.<DistinctIterator>d__81`1.MoveNext() at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at System.Data.Entity.Migrations.Infrastructure.EdmModelDiffer.Diff(XDocument sourceModel, XDocument targetModel, String connectionString) at System.Data.Entity.Migrations.DbMigrator.Scaffold(String migrationName, String namespace, Boolean ignoreChanges) at System.Data.Entity.Migrations.Design.MigrationScaffolder.Scaffold(String migrationName, Boolean ignoreChanges) at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Scaffold(MigrationScaffolder scaffolder) at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.RunCore() at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run() Sequence contains no elements


Esto me sucedió cuando lo estaba haciendo para un pequeño proyecto web.

El archivo .csproj de la web no se pudo cargar una vez y Visual Studio decidió cambiar el proyecto predeterminado a uno aleatorio que se cargó.

Debido a que app.config en el nuevo proyecto predeterminado no contenía ninguna cadena de conexión ... EF no pudo encontrar ningún lugar para actualizar.

Cambiando mi proyecto predeterminado a mi proyecto web, haciendo clic con el botón derecho en el proyecto y seleccionando Establecer como proyecto de inicio, resolví esto por mí.

Pero supongo que el problema aquí fue que EF estaba buscando la primera cadena de conexión en la configuración predeterminada, y el número de cadenas disponibles era 0.


Lo que me estaba causando el problema era cambiar el nombre junto con cambiar las relaciones asociadas con la entidad.

Así que mi resolución en mi caso fue:

  • Cambiando el nombre de nuevo al anterior.
  • Añadiendo la migración (entonces pude hacerlo)
  • Actualizando la base de datos
  • Cambiando el nombre de la entidad y generando una nueva migración.

Sin embargo, puede haber muchas otras causas potenciales de este problema, por ejemplo, eliminar la migración después de que se aplicó. Desafortunadamente, en ninguno de ellos este error es significativo.


Me encontré con el mismo problema, encontré este problema: Migraciones: "La secuencia no contiene elementos" en el modelo difiere después de cambiar el nombre de la propiedad PK cuando se hace referencia a una relación sin ninguna propiedad FK (asociación independiente), que es la situación con la que me he quedado atascado. . es un error pero hay una solución sugerida por un usuario que creo que es una buena solución:

"Mi tabla fue de referencia automática, eliminando la columna de clave externa y luego agregando una migración solucionó el problema y permitió un cambio de nombre de la propiedad

Pasos para corregir, si ayuda:

  1. Eliminar (comentario) las referencias externas de autoreferenciación y organizar una migración, Actualizar base de datos
  2. Cambiar el nombre de la columna de problema, Scaffold otra migración, Actualizar base de datos
  3. Descomentar la auto referenciación de las claves externas y el andamiaje de una migración, Actualizar base de datos
  4. Elimine el código (pero deje la migración) generado por los pasos 1 y 3

Probando la corrección:

  1. Actualización de la base de datos, destino antes de la migración del paso # 1
  2. Actualice la base de datos a la migración más reciente y asegúrese de que no falle ".


Recibí este error al usar OnModelCreating API en OnModelCreating esta manera:

modelBuilder.Entity<ApplicationUser>() .Property(b => b.Id) .HasColumnType("nvarchar(128)");

Cambiado a esto y luego todo funcionó:

modelBuilder.Entity<ApplicationUser>() .Property(b => b.Id) .HasColumnType("nvarchar") .HasMaxLength(128);

Tenga en cuenta que el uso de nvarchar(MAX) y similares no es un problema y no causará este error.

modelBuilder.Entity<ApplicationUser>() .Property(b => b.PasswordHash) .HasColumnType("nvarchar(MAX)");