Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Виртуальные справочники. / 25 сообщений из 71, страница 1 из 3
02.04.2015, 00:22
    #38924358
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
Досталась легаси база. Значение лукапов закодированы не в базе, а на клиенте. Сделал так. но смущает подключение System.Web.UI.WebControls. Кто какие решения использует для этого?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;

namespace FWC.Models
{
    public static class LookupTables
    {
        
        public static List<ListItem> ProjectType
        {
            get
            {
                return new List<ListItem>
                    {
                        new ListItem { Text = "Confirmed", Value = "C" },
                        new ListItem { Text = "Tentative", Value = "T" }
                    };
            }
        }
        
        public static List<ListItem> CrewType
        {
            get
            {
                return new List<ListItem>
                    {
                        new ListItem { Text = "One Men Crew", Value = "1" },
                        new ListItem { Text = "Two Men Crew", Value = "2" },
                        new ListItem { Text = "Three Men Crew", Value = "3" }
                    };
            }
        }

        public static List<ListItem> Status
        {
            get
            {
                return new List<ListItem>
                    {
                        new ListItem { Text = "Closed", Value = "Closed" },
                        new ListItem { Text = "In Progress", Value = "In Progress" },
                        new ListItem { Text = "Open", Value = "Open" }
                    };
            }
        }

    }
}


PS. EF MVC
...
Рейтинг: 0 / 0
02.04.2015, 08:51
    #38924449
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
Relic Hunter,

так ты его отключи, чтоб не смущало. а вообще - сделай три таблички в базе и запердоль эти хард-коды в них. А то это не дело
...
Рейтинг: 0 / 0
02.04.2015, 09:09
    #38924463
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
Relic HunterДосталась легаси база. Значение лукапов закодированы не в базе, а на клиенте. Сделал так. но смущает подключение System.Web.UI.WebControls. Кто какие решения использует для этого?Забавно, Вы типа ручками классы писать не хотите, или не умеете? Только генерировать при помощи EF, либо использовать левые сборки?
...
Рейтинг: 0 / 0
02.04.2015, 09:12
    #38924472
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
Relic Hunter, ИМХО Вам надо завести три перечисления (enum).
...
Рейтинг: 0 / 0
02.04.2015, 09:18
    #38924486
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
PallarisА то это не дело.Почему?
...
Рейтинг: 0 / 0
02.04.2015, 09:25
    #38924496
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
3 enum- а с ресурсами в виде атрибутов.
...
Рейтинг: 0 / 0
02.04.2015, 09:37
    #38924508
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
Алексей КPallarisА то это не дело.Почему?1. модель не должна зависеть от UI.WebControls
2. В типе LookupTables скорее всего вообще нет смысла. ProjectType относится к проектам, CrewType к командам, а Status - это небось статусы выполняемых задач.
...
Рейтинг: 0 / 0
02.04.2015, 10:37
    #38924603
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
skyANAАлексей Кпропущено...
Почему?1. модель не должна зависеть от UI.WebControlsА если не считать это моделью? Если разместить это прямо в контроллере?
...
Рейтинг: 0 / 0
02.04.2015, 10:40
    #38924608
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
Алексей КskyANAпропущено...
1. модель не должна зависеть от UI.WebControlsА если не считать это моделью? Если разместить это прямо в контроллере?Контроллере чего?
...
Рейтинг: 0 / 0
02.04.2015, 10:44
    #38924615
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
Алексей К, и что это тогда будет? Зачем статический класс, со статическими списками в контроллере? И зачем упоминалась база, если это не модель? :)
...
Рейтинг: 0 / 0
02.04.2015, 10:47
    #38924619
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
Ну и пользователь выбирает значения, понятные ему с точки зрения предметной области.
К какой такой предметной области относится LookupTables?
...
Рейтинг: 0 / 0
02.04.2015, 11:08
    #38924664
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
skyANAАлексей Кпропущено...
А если не считать это моделью? Если разместить это прямо в контроллере?Контроллере чего?MV C
skyANAИ зачем упоминалась база, если это не модель? :)Упоминались "лукапы", они же "комбобоксы". :-)

зы: Видимо кому-то лень было делать класс аналог ListItem, содержащийся в System.Web.UI.WebControls.
...
Рейтинг: 0 / 0
02.04.2015, 11:10
    #38924667
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
skyANAК какой такой предметной области относится LookupTables?К предметной области "классификаторы", что на мой взгляд очень плохо. Нет такой предметной области, рано или поздно тут образуется помойка. Мы это уже проходили... :-)
...
Рейтинг: 0 / 0
02.04.2015, 11:14
    #38924678
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
Алексей КskyANAпропущено...
Контроллере чего?MV C
skyANAИ зачем упоминалась база, если это не модель? :)Упоминались "лукапы", они же "комбобоксы". :-)

зы: Видимо кому-то лень было делать класс аналог ListItem, содержащийся в System.Web.UI.WebControls.Контроллеры обычно связаны с сущностями. Таки в контроллер чего ты предлагаешь запихать LookupTables? :)

А еще лень подумать о коллегах, кто будет это сопровождать.
...
Рейтинг: 0 / 0
02.04.2015, 11:19
    #38924692
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
Алексей КskyANAК какой такой предметной области относится LookupTables?К предметной области "классификаторы", что на мой взгляд очень плохо. Нет такой предметной области, рано или поздно тут образуется помойка. Мы это уже проходили... :-)редактирование классификаторов видимо не предполагается :) только выбор значений и исключительно в лукапах :)

Ты понимаешь, что если бы они были в БД, то ТС бы при помощи EF сгенерировал бы совсем другие классы?
...
Рейтинг: 0 / 0
02.04.2015, 11:20
    #38924695
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
skyANAАлексей Кпропущено...
MV C
пропущено...
Упоминались "лукапы", они же "комбобоксы". :-)

зы: Видимо кому-то лень было делать класс аналог ListItem, содержащийся в System.Web.UI.WebControls.Контроллеры обычно связаны с сущностями. Таки в контроллер чего ты предлагаешь запихать LookupTables? :)Почему бы и нет? Я сторонник выделения логики из контроллеров по необходимости.
skyANAА еще лень подумать о коллегах, кто будет это сопровождать.Это может сказаться как позитивно, так и негативно, в зависимости от ситуации.
...
Рейтинг: 0 / 0
02.04.2015, 11:21
    #38924696
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
skyANAАлексей Кпропущено...
К предметной области "классификаторы", что на мой взгляд очень плохо. Нет такой предметной области, рано или поздно тут образуется помойка. Мы это уже проходили... :-)редактирование классификаторов видимо не предполагается :) только выбор значений и исключительно в лукапах :)Этого мы не знаем.
skyANAТы понимаешь, что если бы они были в БД, то ТС бы при помощи EF сгенерировал бы совсем другие классы?Принципиально ничего не поменяется.
...
Рейтинг: 0 / 0
02.04.2015, 11:26
    #38924707
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
Алексей КskyANAпропущено...
Контроллеры обычно связаны с сущностями. Таки в контроллер чего ты предлагаешь запихать LookupTables? :)Почему бы и нет? Я сторонник выделения логики из контроллеров по необходимости.в контроллерах вообще не должно быть логики, так что выделять оттуда нечего
...
Рейтинг: 0 / 0
02.04.2015, 11:27
    #38924713
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
Алексей КskyANAпропущено...
редактирование классификаторов видимо не предполагается :) только выбор значений и исключительно в лукапах :)Этого мы не знаем.
skyANAТы понимаешь, что если бы они были в БД, то ТС бы при помощи EF сгенерировал бы совсем другие классы?Принципиально ничего не поменяется.чтобы принципиально ничего не поменялось, LookupTables не должен быть в контроллере, а должен быть в модели. И тут мы возвращаемся к пунктам 1 и 2 :)
...
Рейтинг: 0 / 0
02.04.2015, 11:32
    #38924724
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
skyANAАлексей Кпропущено...
Почему бы и нет? Я сторонник выделения логики из контроллеров по необходимости.в контроллерах вообще не должно быть логики, так что выделять оттуда нечегоЭто логика?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public class MyController : ApiController
{
    public AppDbContext Db { get; set; }

    public ClassifierItem[] GetClassifier1()
    {
         var q =
             from v in Db.Table1
             select new ClassifierItem { ID = v.ID, Caption = v.Caption };

         return q.ToArray();
    }

    public ClassifierItem[] GetClassifier1()
    {
          return new[] 
          {
               new ClassifierItem { ID = 1, Caption = "Один" },
               new ClassifierItem { ID = 2, Caption = "Два" }
          };
    }
}
...
Рейтинг: 0 / 0
02.04.2015, 11:37
    #38924733
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
Алексей КskyANAпропущено...
в контроллерах вообще не должно быть логики, так что выделять оттуда нечегоЭто логика?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public class MyController : ApiController
{
    public AppDbContext Db { get; set; }

    public ClassifierItem[] GetClassifier1()
    {
         var q =
             from v in Db.Table1
             select new ClassifierItem { ID = v.ID, Caption = v.Caption };

         return q.ToArray();
    }

    public ClassifierItem[] GetClassifier1()
    {
          return new[] 
          {
               new ClassifierItem { ID = 1, Caption = "Один" },
               new ClassifierItem { ID = 2, Caption = "Два" }
          };
    }
}

каждый твой метод должен состоять ровно из одной строки:
Код: c#
1.
return service.GetClassifierN();
...
Рейтинг: 0 / 0
02.04.2015, 11:42
    #38924747
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
И да, это логика. Сегодня она примитивная, а завтра скажут возвращать только активные классификаторы, или действующие на данный момент.
Или соответсвующие роли текущего пользователя.
...
Рейтинг: 0 / 0
02.04.2015, 12:01
    #38924798
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
skyANAкаждый твой метод должен состоять ровно из одной строки:
Код: c#
1.
return service.GetClassifierN();

Недостаточная ответственность класса по Фаулеру.
skyANAИ да, это логика. Сегодня она примитивная, а завтра скажут возвращать только активные классификаторы, или действующие на данный момент.
Или соответсвующие роли текущего пользователя.Вот когда это произойдёт, тогда и будем производить выделение класса, по тому же Фаулеру.
...
Рейтинг: 0 / 0
02.04.2015, 12:30
    #38924852
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
Алексей КPallarisА то это не дело.Почему?

Человек, которому завтра придется разбираться в этом изделии, будет долго разбираться, почему одни данные лежат в БД, другие - зашиты в коде.

Если нужно будет перевести с английского на русский, добавить запись - нужно перекомпилить весь проект или что?
...
Рейтинг: 0 / 0
02.04.2015, 12:33
    #38924854
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Виртуальные справочники.
PallarisАлексей Кпропущено...
Почему?

Человек, которому завтра придется разбираться в этом изделии, будет долго разбираться, почему одни данные лежат в БД, другие - зашиты в коде.Это не влияет на процесс "разбирания в коде".
PallarisЕсли нужно будет перевести с английского на русский, добавить запись - нужно перекомпилить весь проект или что?А если не нужно? А если перекомпилировать проект не проблема?
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Виртуальные справочники. / 25 сообщений из 71, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]