El marco de esfuerzo no reconoce el esquema del modelo de entidad


Pregunta

Tengo un modelo de entidad de una base de datos de Sybase ASE y estoy tratando de usar el Marco de Esfuerzo para crear pruebas unitarias para él. Puedo acceder a la base de datos con el modelo de entidad tanto en mi proyecto principal como en el proyecto de prueba de unidad, sin embargo, cuando intento usar Effort para crear una base de datos en memoria, obtengo una excepción.

Código de problema en proyecto de prueba unitaria

public SetUpShims()
{
     string connString = System.Configuration.ConfigurationManager.ConnectionStrings["CoPathDataContext"].ConnectionString;
     MyDbContext context;
     // CreateTransient throws exception
     EntityConnection conn = Effort.EntityConnectionFactory.CreateTransient(connString);

     context = new Data.CoPathDataContext(conn);

}

Detalles de la excepción: (System.Data.MetadataException)

public SetUpShims()
{
     string connString = System.Configuration.ConfigurationManager.ConnectionStrings["CoPathDataContext"].ConnectionString;
     MyDbContext context;
     // CreateTransient throws exception
     EntityConnection conn = Effort.EntityConnectionFactory.CreateTransient(connString);

     context = new Data.CoPathDataContext(conn);

}

Traza de pila

public SetUpShims()
{
     string connString = System.Configuration.ConfigurationManager.ConnectionStrings["CoPathDataContext"].ConnectionString;
     MyDbContext context;
     // CreateTransient throws exception
     EntityConnection conn = Effort.EntityConnectionFactory.CreateTransient(connString);

     context = new Data.CoPathDataContext(conn);

}

Después de ver los archivos .csdl y .ssdl que hizo la Entidad, creo que encontré los campos que causan el problema.

SSDL

public SetUpShims()
{
     string connString = System.Configuration.ConfigurationManager.ConnectionStrings["CoPathDataContext"].ConnectionString;
     MyDbContext context;
     // CreateTransient throws exception
     EntityConnection conn = Effort.EntityConnectionFactory.CreateTransient(connString);

     context = new Data.CoPathDataContext(conn);

}

CSDL

public SetUpShims()
{
     string connString = System.Configuration.ConfigurationManager.ConnectionStrings["CoPathDataContext"].ConnectionString;
     MyDbContext context;
     // CreateTransient throws exception
     EntityConnection conn = Effort.EntityConnectionFactory.CreateTransient(connString);

     context = new Data.CoPathDataContext(conn);

}

Intenté eliminar el atributo de Precisión de los campos SSDL, pero aún así recibí el mismo error. (Incluso si funcionara, los cambios probablemente no persistirán cuando se regenere el modelo)

¿Alguien piensa en qué está causando la excepción y cómo debo resolverla?

Respuesta popular

si no lo ha hecho, actualice el servidor MySQL a la versión 5.6+. Esto se agregó, luego actualice toda su fecha, fecha y hora ...... con la opción with 0-6 in ()





Licencia bajo: CC-BY-SA
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué