Студопедия

КАТЕГОРИИ:


Архитектура-(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

Сущностные классы создаются в визуальном конструкторе посредством CSDL. Они определяют свойства для своих данных, такие как CarID и Color. Средства доступа set этих свойств инициируют изменение информации двумя разными способами. Один способ состоит в вызове методов ReportPropertyChanging() и ReportPropertyChanged() базового класса EntityObject. Вызов этих методов использует интерфейсы INotifyPropertyChanging и INotifyPropertyChanged для информирования каждого клиента, который зарегистрирован на получение событий об этих интерфейсах.

Другой способ предусматривает применение частичных методов, таких как OnCarIDChanging() и OnCarIDChanged(), которые не имеют реализаций по умолчанию, но могут быть реализованы в специальных расширениях этого класса:

[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)] [DataMemberAttribute()] public global::System.Int32 CarID { get { return _CarID; } set { if (_CarID!= value) { OnCarIDChanging(value); ReportPropertyChanging("CarID"); _CarID = StructuralObject.SetValidValue(value); ReportPropertyChanged("CarID"); OnCarIDChanged(); } } } private global::System.Int32 _CarID; partial void OnCarIDChanging(global::System.Int32 value); partial void OnCarIDChanged();...

Классы и интерфейсы, важные в контексте сущностных классов, списаны в таблице. За исключением INotifyPropertyChanging и INotifyPropertyChanged, эти типы определены в пространстве имен System.Data.Objects.DataClasses:

StructuralObject StructuralObject — базовый класс для классов EntityObject и ComplexObject. Этот класс реализует интерфейсы INotifyPropertyChanging и INotifyPropertyChanged.
INotifyPropertyChanging, INotifyPropertyChanged Эти интерфейсы определяют события PropertyChanging и PropertyChanged, позволяющие подписываться на информацию об изменении состояния объекта. В отличие от прочих классов и интерфейсов, которые перечислены здесь, эти интерфейсы находятся в пространстве имен System.ComponentModel.
IEntityWithRelationships Этот интерфейс определяет свойство только для чтения RelationshipManager, которое возвращает объект RelationshipManager, используемый для навигации между объектами.
EntityObject Этот класс наследуется от StructuralObject и реализует интерфейсы IEntityWithKey, IEntityWithChangeTracker и IEntityWithRelationships. Часто используется в качестве базового класса для объектов, отображаемых на таблицы базы данных, которые содержат ключи и отношения с другими объектами.
ComplexObject Этот класс может служить в качестве базового для сущностных объектов, которые не имеют ключа. Он наследуется от StructuralObject, но не реализует других интерфейсов, как это делает класс EntityObject.
IEntityWithKey Этот интерфейс определяет свойство EntityKey, которое позволяет быстрый доступ к объекту.
IEntityWithChangeTracker Этот интерфейс определяет метод SetChangeTracker(), в котором может быть назначен монитор изменений, реализующий IChangeTracker для получения информации об изменении состояния объекта.

Для сущностного класса не обязательно быть наследником базового класса EntityObject или ComplexObject. Вместо этого сущностный класс может реализовать необходимые интерфейсы.




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


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


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



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




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