2 Stimmen

Entity Framework 4.1 RC POCO - Unit Test der Namen der erzeugten Feldnamen

Ist es möglich, mit EF4.1 auf Metadaten über eine POCO-Entität zuzugreifen, die die Namen der Datenbankfelder enthalten? Vor allem bei Fremdschlüsselwerten.

Ich möchte darauf zugreifen, um Unit-Tests durchzuführen, während ich versuche, EF4.1 auf ein bestehendes Datenbankschema anzuwenden. Ich kann die vorhandenen Spaltennamen nicht ändern.

Derzeit erstellen die Tests die Datenbank mit SQL Server Compact 4.0, so dass ich die Namen der Felder sehen kann, aber es wäre besser, wenn dies automatisiert wäre.

Pseudocode für einen Test, der

  • Entität erstellen
  • Einheit speichern
  • Prüfen Sie, ob der Feldname den Erwartungen entspricht

4voto

Ladislav Mrnka Punkte 355028

Das ist kein Unit-Testing. Das ist ein Integrationstest. Außerdem sind solche Tests nicht sonderlich nützlich. Lassen Sie EF keine Datenbank erstellen und verwenden Sie stattdessen eine Kopie der vorhandenen Datenbank. Speichern Sie einfach die Entität und laden Sie sie in einem neuen Kontext. Wenn die Daten in Ordnung sind, sind Sie damit zufrieden. Sie können jeden Test transaktional machen, so dass die Transaktion nach jedem Test zurückgerollt wird.

EF 4.1 mit Code-First-Ansatz bietet keinen Zugriff auf den Metadaten-Arbeitsbereich. Sie können versuchen zu konvertieren DbContext zurück zu ObjectContext und versuchen, auf MetadataWorkspace :

ObjectContext ctx = ((IObjectContextAdapter) context).ObjectContext;
MetadataWorkspace workspace = ctx.MetadataWorkspace;

Suche nach etwas in MetadataWorkspace ist eine schreckliche Erfahrung. Diese Klasse ist definitiv nicht dafür gedacht, in benutzerdefiniertem Code verwendet zu werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X