Udostępnij przez


klucz jednostki

Klucz jednostki jest właściwością lub zestawem właściwości typu jednostki, które są używane do określania tożsamości. Właściwości tworzące klucz jednostki są wybierane w czasie projektowania. Wartości właściwości klucza jednostki muszą jednoznacznie identyfikować wystąpienie typu jednostki w zestawie jednostek w czasie wykonywania. Właściwości tworzące klucz jednostki należy wybrać w celu zagwarantowania unikatowości wystąpień w zestawie jednostek.

Poniżej przedstawiono wymagania dotyczące zestawu właściwości jako klucza jednostki:

  • Żadne dwa klucze w obrębie zestawu jednostek nie mogą być identyczne. Oznacza to, że dla wszystkich dwóch jednostek w zestawie jednostek wartości wszystkich właściwości, które stanowią klucz, nie mogą być takie same. Jednak niektóre (ale nie wszystkie) wartości tworzące klucz jednostki mogą być takie same.

  • Klucz jednostki musi składać się z zestawu niemienialnych, niepustych właściwości typu prymitywnego.

  • Właściwości tworzące klucz jednostki dla danego typu jednostki nie mogą ulec zmianie. Nie można zezwolić na więcej niż jeden możliwy klucz jednostki dla danego typu jednostki; klucze zastępcze nie są obsługiwane.

  • Gdy jednostka jest zaangażowana w hierarchię dziedziczenia, jednostka główna musi zawierać wszystkie właściwości tworzące klucz jednostki, a klucz jednostki musi być zdefiniowany na typie jednostki głównej. Aby uzyskać więcej informacji, zobacz Model danych jednostki: dziedziczenie.

Przykład

Na poniższym diagramie przedstawiono model koncepcyjny z trzema typami jednostek: Book, Publisheri Author. Właściwości każdego typu encji, które tworzą klucz encji, są oznaczone jako "(Key)". Należy pamiętać, że Author typ jednostki ma klucz jednostki, który składa się z dwóch właściwości: Name i Address.

Przykładowy model z trzema typami jednostek

ADO.NET Entity Framework używa języka specyficznego dla domeny (DSL) nazywanego koncepcyjnym językiem definicji schematu (CSDL) do definiowania modeli koncepcyjnych. Poniższy plik CSDL definiuje Book typ jednostki pokazany na powyższym diagramie. Należy pamiętać, że klucz jednostki jest definiowany przez odwołanie się do ISBN właściwości typu jednostki.

<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>

Właściwość ISBN jest dobrym wyborem dla klucza jednostki, ponieważ unikatowy numer międzynarodowej książki standardowej (ISBN) identyfikuje książkę.

Poniższy plik CSDL definiuje Author typ jednostki pokazany na powyższym diagramie. Należy pamiętać, że klucz jednostki składa się z dwóch właściwości, Name i Address.

<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>

Użycie Name i Address dla klucza jednostki jest rozsądnym wyborem, ponieważ dwóch autorów tej samej nazwy jest mało prawdopodobne, aby mieszkali pod tym samym adresem. Jednak ten wybór klucza jednostki nie gwarantuje absolutnie unikatowych kluczy jednostek w zestawie jednostek. W tym przypadku zaleca się dodanie właściwości, takiej jak AuthorId, która może służyć do unikatowego identyfikowania autora.

Zobacz także