Verwenden von Effort (EF Testing Tool) mit berechneter Spalte

c#-4.0 database effort entity-framework integration-testing

Frage

Ich habe eine Reihe von Integrationstests, die direkt auf die Datenbank zugreifen - Testvoraussetzungsobjekte erstellen - die Tests durchführen und anschließend aufräumen - aber ich wollte den gleichen Ansatz im Speicher ausprobieren.

Ich habe gerade Mühe in meinem Projekt verwendet und es funktioniert sehr einfach. Ich habe jedoch ein Problem, das ich versucht habe - aber nicht lösen können.

Eine der Tabellen, die ich mit Dummy-Daten füllen muss - als Testvoraussetzung - enthält eine berechnete Spalte (nvarchar, nicht null). Für den Umfang des Tests interessiert mich der Wert dieser Spalte nicht wirklich - aber selbst wenn ich Dummy-Daten einfüge, werden meine Daten ignoriert und dann wird ein Fehler ausgegeben:

"Column 'x' cannot be null. Error code: GenericError"

In meinen Tests verwende ich die gleiche edmx-Datei, wie sie vom eigentlichen Code verwendet wird. Das hindert mich daran, die edmx-Kopie ständig zu aktualisieren.

Gibt es einen Weg, auf dem ich den Test erzwingen kann, das edmx (zur Laufzeit) zu aktualisieren, so dass die Spalte eine nullbare nicht berechnete Spalte ist? [overriding OnModelCreating] oder gibt es eine Möglichkeit, einen Standardwert einzufügen (alles für diese Spalte), um diesen Fehler zu stoppen? [überschreibt SaveChanges]

Ich habe derzeit folgendes versucht:

  • Anfügen der Objekte mit .Attach () anstelle von .Add ()
  • Setzen Sie den EntityState nach dem Hinzufügen auf Unverändert
  • Erzwingt den Wert durch Entry.OriginalValues ​​[diese Werte, da sich die Entität im hinzugefügten Zustand befindet]

Bearbeiten:

Ich habe versucht, die OnModelCreating- Methode zu überschreiben, aber ohne Erfolg, da dies DB-First ist.

"Column 'x' cannot be null. Error code: GenericError"

Beliebte Antwort

Öffnen Sie Ihre EDMX-Datei im XML-Editor, suchen Sie Ihre Entität unter den StorageModels und fügen Sie sie zur StoreGeneratedPattern="Computed" .

Aber wenn Sie diese Tabelle aktualisieren oder löschen und hinzufügen, verlieren Sie diese Änderung. Eigentlich kannst du eine Konsolen-App schreiben, die deine edmx-Datei aktualisiert und StoreGeneratedPattern="Computed" hinzufügt, wo du sie brauchst, und du kannst diese App hinzufügen, um Events im Studio zu erstellen.




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