2010-08-16 11 views
7

ho ottenuto l'erroreIl mapping delle stored procedure è tutto-o-niente in Entity Framework? (FunctionMapping)

Non riesci a trovare l'InsertFunctionMapping per EntityType 'xxx' nel file di mapping.

Che è giusto perché è vero. Ma è perché sono contento di EF che fa inserti per me. Voglio semplicemente ignorare la funzione di cancellazione.

Ho pensato che fosse uno dei miglioramenti con EF4? O è solo che si costruirà bene, ma piangerà ancora quando si usano le funzioni non mappate? O è possibile, ma mi manca qualcosa?

risposta

11

AFAIK. È tutto o niente.

Se non si associano tutte e tre le operazioni di inserimento, aggiornamento o eliminazione di un tipo di entità alle stored procedure, le operazioni non mappate non riusciranno se eseguite in fase di esecuzione e viene generata una UpdateException.

MSDN

1

Ho lo stesso o simile problema. Voglio sovrascrivere solo la funzione di cancellazione, ma non è possibile in EF4 senza sovrascrivere anche le funzioni di inserimento e aggiornamento. Nel mio caso ho bisogno di fare questa azione per cancellare:

update table set deleted = 1 where id = @id 

Ho risolto questo in questo modo: Prima di chiamare il metodo context.SaveChanges(true) corro questo codice

foreach (ObjectStateEntry entry in context.ObjectStateManager.GetObjectStateEntries(EntityState.Deleted)) 
{ 
    entry.ChangeState(EntityState.Modified); 
    entry.Entity.GetType().GetProperty("deleted").SetValue(entry.Entity, true, null); 
} 

Sono principiante in EF . Ora sto solo cercando come risolvere alcuni problemi con EF che devo risolvere prima di iniziare a sviluppare un'applicazione basata su EF. Ma ora sembra che questa soluzione dovrebbe funzionare. Io spero.

Problemi correlati