Re[2]: Представление данных в PL в свете Rich, Anemic и пр.
От: stomsky Россия  
Дата: 20.01.11 07:37
Оценка:
Здравствуйте, gandjustas, Вы писали:
G>Совершенно не понял причем тут anemic\rich\ещечтото.
Похоже я слишком широко задал тему вопроса.
Конечно Anemic/Rich (в смысле где хранить логику работы с данными) тут ни при чем. Вернее этот вопрос я для себя уже решил.

G>Из того что есть

G>1)Self tracking entities для EF — данные передаются графом связных объектов, нельзя просто предать несколько графов нельзя, changeset получить сложно
G>2)DataSet — строкотипизировано, неудобно
G>3)WCF Data Services — почти то что нужно, немного геморройно с навигационными свойствами работать
G>4)RIA Services — не сильно разбирался как оно в коде работает
G>Ну или можно самому написать, хотя я бы не рекомендовал.
Честно говоря, я склоняюсь именно к последнему. Использовать EF не хочется. Мне BLToolkit вообще понравился
Насчет DataSet'ов я их до сих пор использую. Знаю, что они "нехорошие", но пока потребности 2-хзвенок с десятком формочек они покрывают с лихвой. Я в основном сопровождением чужого занимаюсь. Свое писать нечасто приходится.

G>IEditableObject лучше не юзать ибо надо отслеживать изменения нескольких объектов.

Не очень понял о чем речь. IEditableObject обеспечивает возможность отмены несохраненных в объекте изменений. Ведет он себя, конечно, странновато в приложении к WinForm'ам, но при чем тут изменение нескольких объектов?

G>2) INotifyPropertyChanged не сильно нужен, потому что объекты будут правиться в интерфейсе.

Ну это как сказать... Я же не зря в своем примере про Поставщика упомянул.
Предполагается, что в диалоге редактирования Накладной будет среди прочего "кнопочка с тремя точками", по нажатию на которую будет открываться диалог выбора поставщиков. Из диалога выбора будем получать ID-шник выбранного поставщика и уже свойству
class Накладная
{
 ...
  public Поставщик Поставщик { get; set; }
 ...
}

будет присваиваться объект класса Поставщик, вытянутый из БД по этому ID-шнику (с теми свойствами).
(Ну естественно, в данном контексте "class Поставщик" это отдельный класс только с теми свойствами, которые нужны в диалоге редактирования Накладной, а не полное отображение таблицы "Поставщики" из БД).
Так вот, после присвоения свойству "Поставщик" другого объекта класса "Поставщик" придется изменить значения свойств
class Накладная
{
 ...
  public string ИНН_Поставщика { get; }
  public string Наименование_Поставщика { get; }
 ...
}

Чтобы эти изменения автоматически отразилось в диалоге редактирования.
Самый прямой способ это сделать, по-моему, — реализовать INotifyPropertyChanged и в сеттере свойства "Поставщик" иницировать события PropertyChanged для соответствующих свойств.
Или я что-то не так понимаю?
Красота — наивысшая степень целесообразности. (c) И. Ефремов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.