Mam zdefiniowane modele na podstawie tabel w bazie danych. Teraz są pewne modele, których dane prawie się nie zmieniają. Na przykład kategorie produktów sprzedawane przez e-comm, miasta, w których wysyła produkty itp. Nie zmieniają się one często, a tym samym, aby uniknąć trafienia w db, są one obecnie zapisywane jako zmienne statyczne.Gdzie w kodzie należy zachować dane, które się nie zmieniają?
Pytanie, gdzie w kodzie powinny znajdować się te zmienne statyczne. Obecnie w klasie ProductCategory (która jest również reprezentacją modelu) zdefiniowana jest lista statyczna, która, jeśli jest pusta, wywołuje bazę danych i ładuje Kategorie produktów. Podobnie, klasa City ma podobną Listę statyczną i tak dalej.
Te statyczne listy są następnie używane w całej aplikacji. Myślałem o stworzeniu klasy o nazwie StaticData, a następnie zachowaniu wszystkich statycznych list w tej klasie. To jest teraz zamiast
ProductCategory.AllCategories.Find(p => p.Id = 2)
będę miał
StaticData.AllProductCategories.Find(p => p.Id = 2)
Która waszym zdaniem jest lepszym rozwiązaniem? Dążę również do testowalności i oddzielenia kodu od produkcji.
Czy istnieje lepszy sposób na ich osiągnięcie? Jak zrobić coś podobnego w swoim kodzie?
Tak, to jest przykładowy kod. Podobne podejście jest obecnie stosowane. Pytanie brzmi, że istnieją scenariusze, w których oprócz pojedynczych zmiennych statycznych, takich jak samochód, motocykl, chcę również kolekcjonować pojazdy, które również są używane w całym kodzie. Teraz gdzie powinna znajdować się ta kolekcja. W klasie pojazdów lub w osobnej klasie? – shashi
@sassyboy: Tak, zazwyczaj umieszczam to w klasie. Miałbym statyczną tablicę tylko do odczytu o nazwie "Wszystko", którą mógłbyś przetłumaczyć, co możesz również wykorzystać do funkcji narzędziowych takich jak 'Get (int id) {return All.FirstOrDefault (x => x.Id == id); } 'jeśli posiadasz własność' Id', na przykład ... (Metoda 'Get' również należy do' Vehicle') –