Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Модель данных сущности (EDM) использует три ключевых понятия для описания структуры данных: типа сущности, типа связи и свойства. Это наиболее важные понятия в описании структуры данных в любой реализации EDM.
Тип сущности
Тип сущности является основным стандартным блоком для описания структуры данных с помощью модели данных сущности. В концептуальной модели типы сущностей создаются из свойств и описывают структуру концепций верхнего уровня, таких как клиенты и заказы в бизнес-приложении. Таким же образом, как определение класса в компьютерной программе является шаблоном для экземпляров класса, тип сущности является шаблоном для сущностей. Сущность представляет конкретный объект (например, конкретный клиент или заказ). Каждая сущность должна иметь уникальный ключ сущности в наборе сущностей. Набор сущностей — это коллекция экземпляров определенного типа сущности. Наборы сущностей (и наборы ассоциаций) логически группируются в контейнер сущностей.
Наследование поддерживается с типами сущностей: то есть один тип сущности может быть производным от другого. Дополнительные сведения см. в разделе "Модель данных сущности: наследование".
Тип ассоциации
Тип ассоциации (также называемый ассоциацией) является основным стандартным блоком для описания связей в модели данных сущностей. В концептуальной модели ассоциация представляет собой отношения между двумя типами сущностей (такими как Клиент и Заказ). Каждая ассоциация имеет два конца ассоциации, указывающих типы сущностей, участвующих в ассоциации. Каждый конец ассоциации также указывает кратность конца ассоциации , указывающую количество сущностей, которые могут находиться в этом конце связи. Кратность конца связи может иметь значение одного (1), ноль или один (0..1) или многие (*). Сущности на одном конце ассоциации можно получить через свойства навигации или через внешние ключи, если они определены в типе сущности. Дополнительные сведения см. в свойстве внешнего ключа.
В приложении экземпляр ассоциации представляет конкретную ассоциацию (например, ассоциацию между экземпляром клиента и экземплярами заказа). Экземпляры ассоциации логически группируются в наборе ассоциаций. Наборы ассоциаций (и наборы сущностей) логически группируются в контейнер сущностей.
Недвижимость
Типы сущностей содержат свойства , определяющие их структуру и характеристики. Например, тип сущности Customer может иметь такие свойства, как CustomerId, Name и Address.
Свойства в концептуальной модели аналогичны свойствам, определенным в классе в компьютерной программе. Таким же образом, как свойства класса определяют форму класса и содержат сведения об объектах, свойства в концептуальной модели определяют форму типа сущности и содержат сведения о экземплярах типов сущностей.
Свойство может содержать примитивные данные (например, строку, целое число или логическое значение) или структурированные данные (например, сложный тип). Дополнительные сведения см. в разделе "Модель данных сущности: примитивные типы данных".
Представления концептуальной модели
Концептуальная модель — это определенное представление структуры некоторых данных в виде сущностей и связей. Одним из способов представления концептуальной модели является схема. На следующей схеме представлена концептуальная модель с тремя типами сущностей (, Bookи двумя ассоциациями) (PublisherAuthorи PublishedByWrittenBy):
Однако это представление имеет некоторые недостатки, когда дело доходит до передачи некоторых сведений о модели. Например, сведения о типе свойств и наборе сущностей не передаются на схеме. Богатство концептуальной модели можно передать более четко с помощью языка для конкретного домена (DSL). Платформа ADO.NET Entity Framework использует XML-язык DSL под названием Язык определения концептуальной схемы (CSDL) для определения концептуальных моделей. Ниже приведено определение CSDL концептуальной модели на приведенной выше схеме:
<Schema xmlns="http://schemas.microsoft.com/ado/2008/09/edm"
xmlns:cg="http://schemas.microsoft.com/ado/2006/04/codegeneration"
xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator"
Namespace="BooksModel" Alias="Self">
<EntityContainer Name="BooksContainer" >
<EntitySet Name="Books" EntityType="BooksModel.Book" />
<EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
<EntitySet Name="Authors" EntityType="BooksModel.Author" />
<AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
<End Role="Book" EntitySet="Books" />
<End Role="Publisher" EntitySet="Publishers" />
</AssociationSet>
<AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
<End Role="Book" EntitySet="Books" />
<End Role="Author" EntitySet="Authors" />
</AssociationSet>
</EntityContainer>
<EntityType Name="Book">
<Key>
<PropertyRef Name="ISBN" />
</Key>
<Property Type="String" Name="ISBN" Nullable="false" />
<Property Type="String" Name="Title" Nullable="false" />
<Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
<NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
FromRole="Book" ToRole="Publisher" />
<NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
FromRole="Book" ToRole="Author" />
</EntityType>
<EntityType Name="Publisher">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Type="Int32" Name="Id" Nullable="false" />
<Property Type="String" Name="Name" Nullable="false" />
<Property Type="String" Name="Address" Nullable="false" />
<NavigationProperty Name="Books" Relationship="BooksModel.PublishedBy"
FromRole="Publisher" ToRole="Book" />
</EntityType>
<EntityType Name="Author">
<Key>
<PropertyRef Name="Name" />
<PropertyRef Name="Address" />
</Key>
<Property Type="String" Name="Name" Nullable="false" />
<Property Type="String" Name="Address" Nullable="false" />
<NavigationProperty Name="Books" Relationship="BooksModel.WrittenBy"
FromRole="Author" ToRole="Book" />
</EntityType>
<Association Name="PublishedBy">
<End Type="BooksModel.Book" Role="Book" Multiplicity="*" />
<End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
</Association>
<Association Name="WrittenBy">
<End Type="BooksModel.Book" Role="Book" Multiplicity="*" />
<End Type="BooksModel.Author" Role="Author" Multiplicity="*" />
</Association>
</Schema>