Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

ObjectContext




Чтобы извлечь информацию из базы данных, необходим класс ObjectContext. Этот класс определяет отображение сущностных объектов на базу данных. Этот класс можно сравнить с адаптером данных из основного ADO.NET, который наполняет DataSet.

Класс AutoLotEntities, созданный визуальным конструктором, наследуется от базового класса ObjectContext. Этот класс добавляет конструкторы, принимающие строку соединения. В конструкторе по умолчанию строка соединения читается из конфигурационного файла. Можно также передать конструктору уже открытое соединение в виде экземпляра EntityConnection. Если передать конструктору неоткрытое соединение, объект ObjectContext откроет и закроет соединение. В случае передачи открытого соединения его понадобится впоследствии закрыть. Созданный класс определяет свойства Books и Authors, которые возвращают ObjectSet<TEntity>. Это новый класс в.NET 4, унаследованный от класса ObjectQuery<TEntity>:

public partial class AutoLotEntities: ObjectContext { #region Конструкторы /// <summary> /// Инициализирует новый объект AutoLotEntities, используя строку соединения из раздела "AutoLotEntities" файла конфигурации приложения. /// </summary> public AutoLotEntities(): base("name=AutoLotEntities", "AutoLotEntities") { this.ContextOptions.LazyLoadingEnabled = true; OnContextCreated(); } /// <summary> /// Инициализация нового объекта AutoLotEntities. /// </summary> public AutoLotEntities(string connectionString): base(connectionString, "AutoLotEntities") { this.ContextOptions.LazyLoadingEnabled = true; OnContextCreated(); } /// <summary> /// Инициализация нового объекта AutoLotEntities. /// </summary> public AutoLotEntities(EntityConnection connection): base(connection, "AutoLotEntities") { this.ContextOptions.LazyLoadingEnabled = true; OnContextCreated(); } #endregion #region Разделяемые методы partial void OnContextCreated(); #endregion #region Свойства ObjectSet /// <summary> /// Нет доступной документации по метаданным. /// </summary> public ObjectSet<Car> Cars { get { if ((_Cars == null)) { _Cars = base.CreateObjectSet<Car>("Cars"); } return _Cars; } } private ObjectSet<Car> _Cars; #endregion #region Методы AddTo /// <summary> /// Устаревший метод для добавления новых объектов в набор EntitySet Cars. Взамен можно использовать метод.Add связанного свойства ObjectSet<T>. /// </summary> public void AddToCars(Car car) { base.AddObject("Cars", car); } #endregion }

Класс ObjectContext предоставляет вызывающему коду несколько услуг:

- Он отслеживает сущностные объекты, которые уже извлечены. Если объект запрашивается вновь, он берется из объектного контекста.

- Он хранит информацию о сущностях. Из него можно получить информацию о добавленных, модифицированных и удаленных объектах.

- Можно обновлять сущности из объектного контекста, чтобы записывать изменения в лежащее в его основе хранилище.

Методы и свойства класса ObjectContext перечислены ниже:

Connection Возвращает объект DbConnection, присвоенный объектному контексту.
MetadataWorkspace Возвращает объект MetadataWorkspace, который может быть использован для чтения метаданных и информации об отображении.
QueryTimeout С помощью этого свойства можно получать и устанавливать значение таймаута для запросов объектного контекста.
ObjectStateManager Это свойство возвращает ObjectStateManager. Диспетчер ObjectStateManager следит за извлеченными сущностными объектами и изменениями объектов из объектного контекста.
CreateQuery() Этот метод возвращает ObjectQuery для получения данных из хранилища.
GetObjectByKey(), TryGetObjectByKey() Эти методы возвращают объект по ключу — либо от диспетчера состояния объектов, либо из лежащего в основе хранилища. Если ключ отсутствует, GetObjectByKey() генерирует исключение типа ObjectNotFoundException. Метод TryGetObjectByKey() возвращает false.
AddObject() Этот метод добавляет новый сущностный объект к объектному контексту.
DeleteObject() Этот метод удаляет объект из объектного контекста.
Detach() Этот метод отсоединяет сущностный объект от объектного контекста, так что его изменения больше не отслеживаются.
Attach(), AttachTo() Метод Attach() присоединяет отсоединенный объект к хранилищу. Присоединение объектов обратно к объектному контексту требует, чтобы сущностный объект реализовывал интерфейс IEntityWithKey. Метод AttachTo() не предъявляет требования наличия ключа у объекта, но требует установки имени сущности, когда объект нуждается в присоединении.
ApplyPropertyChanges() Если объект отключен от объектного контекста, то если отключенный объект модифицируется, и затем эти изменения должны быть применены внутри объектного контекста, можно вызвать метод ApplyPropertyChanges() для применения изменений. Это удобно в тех сценариях, когда отсоединенный объект возвращается веб-службой, изменяется на клиенте и передается веб-службе в модифицированном виде.
Refresh() Пока сущностные объекты находятся внутри объектного контекста, данные в хранилище могут изменяться. Чтобы выполнить обновление данных из хранилища, можно использовать метод Refresh(). Этому методу можно передавать значение перечисления RefreshMode. Если значения объекта отличаются между хранилищем и объектным контекстом, передача значения Clientwins изменяет данные в хранилище. Значение storewins изменяет данные в объектном контексте.
SaveChanges() Добавление, модификация и удаление объектов из объектного контекста не изменяет объект в хранилище. С помощью метода SaveChanges() изменения записываются в хранилище.
AcceptAllChanges() Этот метод изменяет состояние объектов в контексте на немодифицированное. SaveChanges() неявно вызывает этот метод.

 




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 493; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.