Effort Framework non riconosce lo schema del modello di entità

c# effort entity-framework-5 sybase-ase unit-testing

Domanda

Ho un modello di entità di un database Sybase ASE e sto cercando di utilizzare il quadro di sforzo per creare test di unità per esso. Sono in grado di accedere al database con il modello di entità sia nel mio progetto principale sia nel progetto di test unitario, tuttavia quando provo a utilizzare Effort per creare un database in memoria, ottengo un'eccezione.

Codice problema nel progetto Test unità

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);

}

Dettagli eccezione: (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);

}

Stack Trace

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);

}

Dopo aver esaminato i file .csdl e .ssdl creati da Entity, credo di aver trovato i campi che causano il 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);

}

Ho provato a rimuovere l'attributo Precision dai campi SSDL, ma ho comunque ricevuto lo stesso errore. (Anche se funzionasse, le modifiche probabilmente non persisterebbero quando il modello è rigenerato)

Qualcuno pensa a cosa sta causando l'eccezione e come dovrei risolverlo?

Risposta popolare

se non l'hai fatto, esegui l'upgrade del server MySQL a 5.6+, questo è stato aggiunto quindi aggiorna tutta la tua data, datetime, ora ...... con l'opzione 0-6 in ()




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché