2015-04-20 4 views
5

Come faccio a generare guid per le mie entità nella mia app che saranno archiviate da entity framework in sql azure.È meglio generare manualmente guid nella mia app o lasciare sql server/azure sql generarlo per me

In questo momento io uso Id = Guid.NewGuid(). È corretto?

EDIT

di chiarire perché sto chiedendo questo per, sotto è le mie spiegazioni

Il mio amico mi ha detto che di SQL Server può generare guid con "NewID()". In questo momento ho generato guid nella mia app utilizzando "Guid.NewGuid()". Quale dovrei usare? Per me, il mio approccio attuale è più conveniente perché ottengo il valore guida anche prima di salvarlo nel database. Qual è il lato su/giù di ciascun approccio?

+0

La tua domanda potrebbe richiedere qualche miglioramento. Otterrai una risposta molto migliore se leggi questo: http://stackoverflow.com/help/how-to-ask –

+0

@matt Grazie per i tuoi input. Proverò a rivedere la domanda. – Reynaldi

+0

Se stai usando Guidi come chiave, dai un'occhiata a questo articolo su sqlskills.com: http://www.sqlskills.com/blogs/kimberly/guids-as-primary-keys-andor-the-clustering-key/ –

risposta

5

Non importa dove generi il Guid perché è garantito che sia univoco in entrambi i casi. Ma le persone provenienti da uno sfondo Domain Driven Design suggeriscono che generarlo sul lato C# è l'approccio corretto in quanto è possibile utilizzarlo immediatamente senza dover eseguire query al database se è necessario aggiornare un entità diversa con tale Guid.

+2

Avere l'ID a vostra disposizione immediatamente è per me il motivo per cui genera gli ID nel mio codice e non ho l'ID generato dal server. Questo in teoria rende anche più semplice passare a un altro server di database. –

+0

Sono d'accordo. Mentre ci spostiamo verso la logica del core business in 'C#' e usiamo il database solo come archivio dati, questo è diventato uno schema indispensabile. –

+0

Ma ho letto da qualche parte che guid generati dal database ha prestazioni migliori soprattutto per il clustering. Hai qualche pensiero per quello? – Reynaldi