Effort Framework erkennt das Entity Model-Schema nicht

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

Frage

Ich habe ein Entity-Modell einer Sybase ASE-Datenbank und versuche, das Effort-Framework zu verwenden, um Unit-Tests dafür zu erstellen. Ich bin in der Lage, auf die Datenbank mit dem Entitätsmodell sowohl in meinem Hauptprojekt als auch in meinem Unit Test-Projekt zuzugreifen. Wenn ich versuche, Aufwand zu verwenden, um eine In-Memory-Datenbank zu erstellen, erhalte ich eine Ausnahme.

Problemcode im Unit-Test-Projekt

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

}

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

}

Nachdem ich mir die .csdl- und .ssdl-Dateien angesehen habe, die diese Entität erstellt hat, glaube ich, dass ich die Felder gefunden habe, die das Problem verursacht haben.

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

}

Ich habe versucht, das Precision-Attribut aus den SSDL-Feldern zu entfernen, aber ich habe immer noch denselben Fehler erhalten. (Selbst wenn es funktioniert hätte, würden die Änderungen wahrscheinlich nicht bestehen, wenn das Modell neu generiert wird)

Irgendwelche Gedanken darüber, was die Ausnahme verursacht und wie ich sie lösen sollte?

Beliebte Antwort

Wenn Sie dies noch nicht getan haben, upgraden Sie den MySQL Server auf 5.6 und das wurde hinzugefügt. Dann aktualisieren Sie alle Ihre Daten, Datum, Uhrzeit, ... mit der Option 0-6 in ()




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum