Utilizzo dello sforzo (strumento di test EF) con colonna calcolata

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

Domanda

Ho un certo numero di test di integrazione che accedono direttamente al DB - creo oggetti prerequisiti di test - eseguo i test e poi pulisco in seguito - tuttavia ho provato a provare lo stesso approccio in memoria.

Ho appena usato Effort nel mio progetto e funziona molto facilmente. Tuttavia, ho riscontrato un problema che ho cercato, ma che non sono riuscito a risolvere.

Una delle tabelle che ho bisogno di riempire con dati fittizi - come prerequisito di test - contiene una colonna calcolata (nvarchar, non null). Per lo scopo del test non mi interessa davvero il valore di quella colonna - ma anche se provo a inserire dati fittizi, i miei dati vengono ignorati e quindi viene colpito da un errore:

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

Nei miei test sto usando lo stesso file edmx usato dal codice reale. Questo mi impedisce di aggiornare costantemente la copia edmx.

C'è un modo in cui posso forzare il test per aggiornare edmx (in fase di esecuzione) in modo che la colonna sia una colonna non calcolata nullable? [sovrascrivendo OnModelCreating] o esiste un modo per inserire un valore predefinito (qualcosa va per questa colonna) per fermare questo errore? [sostituendo SaveChanges]

Al momento ho provato il seguente:

  • Allegare gli oggetti usando .Attach () invece di .Add ()
  • Impostazione di EntityState su Unchanged dopo l'aggiunta
  • Forzare il valore tramite Entry.OriginalValues ​​[questo valore poiché l'entità è in stato Aggiunto]

Modificare:

Ho provato a sovrascrivere il metodo OnModelCreating , ma senza alcun risultato poiché questo è DB-First.

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

Risposta popolare

Apri il tuo file EDMX nell'editor XML, trova la tua entità sotto StorageModels e aggiungi alla definizione della colonna StoreGeneratedPattern="Computed" .

Ma se aggiorni o elimini e aggiungi quella tabella perderai questa modifica. In realtà puoi scrivere app per la console che aggiornerà il tuo file edmx e aggiungerà StoreGeneratedPattern="Computed" dove necessario e potrai aggiungerle per la pre-build degli eventi in studio.




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é