Поделиться через


Ограничение целостности ссылок

Ограничение целостности ссылок в модели данных сущности (EDM) аналогично ограничению целостности ссылок в реляционной базе данных. Таким же образом, как столбец (или столбцы) из таблицы базы данных может ссылаться на первичный ключ другой таблицы, свойство (или свойства) типа сущности может ссылаться на ключ сущности другого типа сущности. Тип сущности, на который ссылается ссылка, называется основным концом ограничения. Тип сущности, ссылающийся на главный конец, называется зависимым концом ограничения.

Ограничение целостности ссылки определяется как часть связи между двумя типами сущностей. Определение ограничения целостности ссылки указывает следующие сведения:

  • Главная цель ограничения. (Тип сущности, ключ сущности которого ссылается на связанный элемент.)

  • Ключ сущности основного элемента.

  • Зависимый конец ограничения. (Тип сущности, имеющий свойство или свойства, ссылающиеся на ключ сущности основного элемента.)

  • Свойство ссылки или свойства зависимого конца.

Цель ограничений целостности ссылок в EDM заключается в том, чтобы убедиться, что допустимые связи всегда существуют. Дополнительные сведения см. в свойстве внешнего ключа.

Пример

На схеме ниже показана концептуальная модель с двумя ассоциациями: WrittenBy и PublishedBy. Тип сущности Book имеет свойство PublisherId, которое ссылается на ключ сущности типа Publisher, когда вы определяете ограничение ссылочной целостности на ассоциацию PublishedBy.

RefConstraintModelПример

В ADO.NET Entity Framework используется язык, зависящий от домена (DSL), называемый языком определения концептуальной схемы (CSDL) для определения концептуальных моделей. Следующий CSDL определяет ограничение ссылочной целостности на ассоциацию PublishedBy, показанную в приведенной выше концептуальной модели.

<Association Name="PublishedBy">
  <End Type="BooksModel.Book" Role="Book" Multiplicity="*" >
  </End>
  <End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
  <ReferentialConstraint>
    <Principal Role="Publisher">
      <PropertyRef Name="Id" />
    </Principal>
    <Dependent Role="Book">
      <PropertyRef Name="PublisherId" />
    </Dependent>
  </ReferentialConstraint>
</Association>

См. также