Udostępnij za pośrednictwem


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 ramach zestawu 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 jednostki w zestawie 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 niezmienialnych, niezmiennych, pierwotnych właściwości typu.

  • 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 jednostki, które tworzą klucz jednostki, są oznaczone ciągiem "(Key)". Należy pamiętać, że Author typ jednostki ma klucz jednostki, który składa się z dwóch właściwości i Name Address.

Example model with three entity types

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 i Name 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 też