Korzystam z dost�pu do danych w MSSQL za pomoc� Linq. Mam tam tabel�
powiedzmy "wojew�dztwa", kt�ra ma dwie kolumny Guid i Name i przechowuje
nazwy wojew�dztw (16 rekord�w).
Nsat�pnie w kodzie, �eby rozr�ni� kt�re wojew�dztwo zosta�o wybrane
robiďż˝ coďż˝ takiego:
string strWojewodztwo = (tu jakies query);
switch(strWojewodztwo)
{
case "mazowieckie":
//rob cos
break;
case "malopolskie":
//rob cos
break;
case "dolnoslaskie":
//rob cos
break;
case "slaskie":
//rob cos
break;
.....
}
Wydaje mi si� �e nie jest to najlepszy pomys� �eby switch() orientowa�
si� na podstawie warto�ci typu string. O wiele lepiej by�o by zrobi�
public enum BinaryDataType
{
mazowieckie,
malopolskie,
doloslaskie,
slaskie,
....
}
Tylko jak dane z takiego enum'a sprz�c z daymi w bazie?
Chodzi o to, �e w jakiejs innej tabeli zamiast Guid wojewodztwa
musialbym przechowywac numer zgodny z tym w enumie.
P.S.
Wojewodztwa to tylko przyklad. W rzeczywistosci bede przetrzymywal inne
wartosci.
Witam
> Korzystam z dost�pu do danych w MSSQL za pomoc� Linq. Mam tam tabel�
> powiedzmy "wojew�dztwa", kt�ra ma dwie kolumny Guid i Name i przechowuje
> nazwy wojew�dztw (16 rekord�w).
>
> Nsat�pnie w kodzie, �eby rozr�ni� kt�re wojew�dztwo zosta�o wybrane robi�
> coďż˝ takiego:
>
> string strWojewodztwo = (tu jakies query);
>
> switch(strWojewodztwo)
> {
> case "mazowieckie":
> //rob cos
> break;
> case "malopolskie":
> //rob cos
> break;
> case "dolnoslaskie":
> //rob cos
> break;
> case "slaskie":
> //rob cos
> break;
> .....
> }
>
> Wydaje mi si� �e nie jest to najlepszy pomys� �eby switch() orientowa� si�
> na podstawie warto�ci typu string. O wiele lepiej by�o by zrobi�
Stringi w C# s� przechowywane w "magazynie string�w", zmienna przechowuje
tylko id z "magazynu".
Wi�c por�wnywanie string�w nie jest kosztowne, faktycznie jest to por�wnanie
dw�ch id. Ja bym zostawi� na stringach tego switcha.
> public enum BinaryDataType
> {
> mazowieckie,
> malopolskie,
> doloslaskie,
> slaskie,
> ....
> }
>
> Tylko jak dane z takiego enum'a sprz�c z daymi w bazie?
> Chodzi o to, �e w jakiejs innej tabeli zamiast Guid wojewodztwa musialbym
> przechowywac numer zgodny z tym w enumie.
Problemy przy zmianie enuma lub bazy. Bym raczej unikaďż˝.
> P.S.
> Wojewodztwa to tylko przyklad. W rzeczywistosci bede przetrzymywal inne
> wartosci.
>
> __________ Informacja programu ESET Smart Security, wersja bazy sygnatur
> wirusow 4671 (20091208) __________
>
> Wiadomosc zostala sprawdzona przez program ESET Smart Security.
>
> http://www.eset.pl lub http://www.eset.com
>
>
__________ Informacja programu ESET Smart Security, wersja bazy sygnatur wirusow 4671 (20091208) __________
Wiadomosc zostala sprawdzona przez program ESET Smart Security.
o wiele lepiej i bezpieczniej województwa przechowywać w formacie liczbowym (który też do czegoś poza identyfikacją może się przydać) i to najlepiej nie wymyslonym przez siebie tylko jakimś, który jest uznanym standardem, np. w tym przypadku TERYT: 02 dolnośląskie, 04 kujawsko-pomorskie, ... , 32 zachodniopomorskie.
http://www.stat.gov.pl/broker/access/index.jspa
http://pl.wikipedia.org/wiki/TERYT
--
td
A nieparzyste gdzie im wci�o? Reserved?
--
Azarien
a to już pytanie do GUS albo ustawodawcy :)
--
td
Skoro por�wnuje si� na podstawie "id", to dlaczego s� r�nice w czasach
por�wnania przy u�yciu
==, equals, string.compare (z r�nymi parametrami)?
>
>> public enum BinaryDataType
>> {
>> mazowieckie,
>> malopolskie,
>> doloslaskie,
>> slaskie,
>> ....
>> }
>>
>> Tylko jak dane z takiego enum'a sprz�c z daymi w bazie?
>> Chodzi o to, �e w jakiejs innej tabeli zamiast Guid wojewodztwa
>> musialbym przechowywac numer zgodny z tym w enumie.
>
> Problemy przy zmianie enuma lub bazy. Bym raczej unikaďż˝.
Jak s� stringi to r�wnie� masz problem jak zmienisz baz� danych.
Mo�esz trzyma� stringi a potem zrobi� tak.
string wojewodztwo = WyciagnijZBazy();
Wojewodztwo w = (Wojewodztwo)Enum.Parse(typeof(Wojewodztwo), wojewodztwo);
Można zrobić tworzenie kodu enuma na podstawie tabeli w bazie danych.
Wtedy po przekompilowaniu będziesz miał dostęp do nazwy województwa a
po rzutowaniu na int jego id
Wadą jest to że trzeba się trzymać schematu że jeżeli coś dodam do tej
tabeli to musze odpalić zrzucanie do enum i przekompilować