Например, допустим, у меня есть 3 возможных статуса проекта:
- Открыто
- Закрыто
- Неактивно
Давайте притворимсяЯ создал два проекта, один со статусом «Открытый», а другой со статусом «Неактивный».Затем, где-то в будущем, статус «Неактивный» больше не подходит, поэтому он деактивируется с помощью некоторого флага «IsActive» в таблице статусов.Это приводит к тому, что он больше не отображается в списке статусов, привязанных к DropDownList или эквивалентному списку.
Итак, теперь, когда пользователи создают новые элементы проекта, на экране «Добавить новый» должны отображаться только два активных статуса.Открыто и Закрыто.Но теперь давайте предположим, что они редактируют прошлые проекты, статусы которых могут больше не быть активными и доступными.Какие методы используются для включения неактивного статуса в список, по крайней мере до тех пор, пока они не будут повторно сохранены с использованием активного статуса?(Хотя я, вероятно, разрешил бы повторное сохранение со старым статусом.)
Я вижу несколько вариантов, но никогда не решал эту проблему до того, как не уверен, какой из них будет проще всего поддерживать:
- Всегда выбирайте все возможные статусы из репозитория, а в управляемом коде отфильтровывайте неактивные, кроме статуса, установленного в настоящее время в проекте, и выполняйте привязку, используя этот список.
- Выберите только активные статусыиз репозитория и добавьте (объедините), в управляемом коде, статус из проекта в список и свяжите с этим списком.
- Передайте идентификатор для проекта через SQL, который получает статусы и используетчтобы объединить текущий статус проекта со списком активных статусов и связать его с помощью этого списка.
Кажется, что каждый из них может быть довольно простым для реализации, но, как я уже сказал, я не опытныйс этой ситуацией.У меня есть несколько списков элементов, которые можно активировать / деактивировать через экраны обслуживания, доступные администраторам;некоторые останутся довольно статичными, но некоторые будут расти бесконечно большими.Варианты 2 и 3 были бы наиболее эффективными, когда списки растут довольно большими, но вариант 1 кажется наиболее простым для реализации.
Меня больше беспокоит время, чем производительность, чем эта точка,Я работаю над приложением ASP.NET, .NET 2.0, C #, веб-формами для пользовательского интерфейса и (I / My) Batis.NET для уровня данных, который взаимодействует с базой данных SQL Server.
Что бы вы мне посоветовали, боги StackOverflow?