На самом деле, сами объекты должны быть агностиками, когда дело доходит до настойчивости.Под этим я подразумеваю, что объекты не должны ни заботиться, ни даже знать о том, как они хранятся / загружаются.
Существует несколько способов достижения постоянства.Одним из способов является наличие DAL (уровня доступа к данным), который знает, как загружать и хранить данные, связанные с вашими объектами.Имейте в виду, однако, что даже DAL не будет иметь жестко запрограммированную строку подключения, а должен извлекать ее из файла конфигурации по мере необходимости.
Простой пример здесь: http://www.radsoftware.com.au/articles/dataaccesslayerdesign1.aspx Лично,Я не согласен со всем о том, как это было сделано, но это хорошая отправная точка, чтобы узнать о них.
Для более углубленного прочтения взгляните на Entity Framework http://msdn.microsoft.com/en-us/library/bb399572.aspx
Другой способ заключается в использовании Inversion of Control и Dependency Injection.Идея состоит в том, что ваш объект будет иметь методы Save()
и Load()
, которые принимают некоторый тип интерфейса, который выполняет фактическое постоянство.http://msdn.microsoft.com/en-us/library/aa973811.aspx
Это немного сложнее, чтобы разобраться, но выплачивает дивиденды с гибкостью, чтобы заменить хранилища по требованию.Это означает, что намного проще поддерживать несколько баз данных или даже хранить объекты в файлах csv / xml.