2009-07-24 21 views
5

This question evidenzia che non è possibile utilizzare GUID generati dal lato server con il framework entità. Ma voglio che la generazione del GUID venga gestita al livello DAL dell'API del database (cioè, quando viene chiamato il costruttore di un'entità, voglio che l'id dell'entità venga inizializzata su un nuovo GUID). Il mio piano è scrivere un piccolo strumento per generare un gruppo di file di codice che sono classi parziali delle entità. Ho un modo per farlo, la domanda è: sono fuori di testa per averlo fatto in questo modo o è questo il modo in cui dovrei farlo?Utilizzo di GUID e Entity Framework

Il mio problema è che quando il file edmx è aggiornato, non voglio dover modificare anche un gruppo di file di codice, voglio solo eseguire uno strumento che faccia ciò che è necessario.

Ancora, la mia testa è dritta?

risposta

6

Bene se si guardano le classi parziali che Entity Framework genera di default, non esiste un costruttore predefinito.

così facendo questo in una classe parziale separata funzionerà bene:

public partial class Customer{ 
    public Customer(){ 
     _ID = Guid.NewGuid(); 
    } 
} 

Quindi probabilmente non c'è nessun motivo per non fare qualcosa di simile si sta progettando.

Si potrebbe voler esaminare i modelli T4 per fare questo però. Ecco come EF 4.0 (ovvero EF in .NET 4.0) consente di personalizzare il codice generato. Ora, mentre in 4.0 quell'esperienza è del tutto inaspettata, potresti facilmente mettere insieme qualcosa basato su T4 solo per creare queste classi parziali che funzioneranno bene in .NET 3.5 SP1.

Spero che questo aiuti

Alex

+0

Molto utile suggerimento. Probabilmente non userò i modelli T4 su questo progetto, ma molto utile per conoscere altri progetti. –

+0

Questo ha funzionato per me quando un valore predefinito di server di newid() no. Grazie! – el2iot2