Effort Framework ne reconnaît pas le schéma de modèle d'entité

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

Question

J'ai un modèle d'entité d'une base de données Sybase ASE et j'essaie d'utiliser Effort Framework pour créer des tests unitaires. Je peux accéder à la base de données avec le modèle d'entité à la fois dans mon projet principal et dans mon projet de test unitaire. Toutefois, lorsque j'essaie d'utiliser Effort pour créer une base de données en mémoire, j'obtiens une exception.

Code de problème dans le projet de test unitaire

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

}

Détails de l'exception: (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);

}

Trace de la pile

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

}

Après avoir examiné les fichiers .csdl et .ssdl créés par Entity, je pense avoir trouvé les champs à l'origine du problème.

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

}

J'ai essayé de supprimer l'attribut Precision des champs SSDL, mais j'ai quand même reçu la même erreur. (Même si cela fonctionnait, les modifications ne persisteraient probablement pas lors de la régénération du modèle)

Quelqu'un pense-t-il sur ce qui cause l'exception et comment je devrais la résoudre?

Réponse populaire

si vous ne l'avez pas encore fait, mettez à niveau le serveur MySQL vers la version 5.6 ou plus qui a été ajoutée, puis mettez à jour toutes vos date, date / heure, heure ...... avec l'option with de 0 à 6 in ()




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi