2015-04-20 9 views
5

Jak wygenerować guid dla moich podmiotów w mojej aplikacji, które będą przechowywane przez strukturę encji do sql azure. W tej chwili używam Id = Guid.NewGuid(). Czy to jest poprawne?Czy lepiej generować GUID ręcznie w mojej aplikacji lub pozwolić serwerowi sql/lazuru sql wygenerować go dla mnie?

EDIT

Aby wyjaśnić, dlaczego pytam o to, poniżej jest moje wyjaśnienia

Mój przyjaciel powiedział mi, że serwer SQL może generować guid z "newID()". Teraz generuję GUID w mojej aplikacji za pomocą "Guid.NewGuid()". Którego powinienem użyć? Dla mnie moje obecne podejście jest wygodniejsze, ponieważ uzyskuję wartość guid, nawet przed zapisaniem jej w bazie danych. Jaka jest góra/dół każdego podejścia?

+0

Twoje pytanie może trochę poprawić. Otrzymasz znacznie lepszą odpowiedź, jeśli przeczytasz to: http://stackoverflow.com/help/how-to-ask –

+0

@matt Dzięki za twoje dane wejściowe. Spróbuję zrewidować to pytanie. – Reynaldi

+0

Jeśli używasz Guids jako kluczy, zapoznaj się z tym artykułem na stronie sqlskills.com: http://www.sqlskills.com/blogs/kimberly/guids-as-primary-keys-andor-the-clustering-key/ –

Odpowiedz

5

To naprawdę nie ma znaczenia, gdzie generujesz Guid, ponieważ gwarantowane jest unikalne w obu przypadkach. Jednak użytkownicy pochodzący z tła Domain Driven Design sugerują, że generowanie go po stronie C# jest właściwym podejściem, ponieważ można go użyć od razu, bez konieczności wysyłania zapytań do bazy danych, jeśli pojawi się potrzeba zaktualizowania innej jednostki o tej Guid.

+2

Posiadanie ID do Twojej dyspozycji jest dla mnie powodem, dla którego generuję ID w moim kodzie i nie mam identyfikatora wygenerowanego przez serwer. Teoretycznie ułatwia również przełączanie się na inny serwer bazy danych. –

+0

Zgadzam się. W miarę przechodzenia do głównej logiki biznesowej w 'C# 'i korzystania z bazy danych tylko jako magazynu danych, stało się to niezastąpionym wzorem. –

+0

Ale czytałem gdzieś, że guid generowane przez bazę danych ma lepszą wydajność, szczególnie dla klastrowania. Czy masz na to jakąś myśl? – Reynaldi