Aracılığıyla paylaş


Varlık Veri Modeli: Devralma

Varlık Veri Modeli (EDM), varlık türleri için devralmayı destekler. EDM'deki devralma, nesne odaklı programlama dillerindeki sınıflar için devralmaya benzer. Nesne odaklı dillerdeki sınıflarda olduğu gibi kavramsal modelde de başka bir varlık türünden (temel tür) devralan bir varlık türü (türetilmiş tür) tanımlayabilirsiniz. Ancak, nesne odaklı programlamadaki sınıflardan farklı olarak, kavramsal modelde türetilen tür her zaman temel türün tüm özelliklerini ve gezinti özelliklerini devralır. Türetilmiş bir türdeki devralınan özellikleri geçersiz kılamazsınız.

Kavramsal modelde, türetilmiş bir türün başka bir türe ait devralındığı devralma hiyerarşileri oluşturabilirsiniz. Hiyerarşinin en üstündeki tür (hiyerarşide türetilmiş tür olmayan bir tür) kök tür olarak adlandırılır. Devralma hiyerarşisinde , varlık anahtarı kök türünde tanımlanmalıdır.

Türetilmiş bir türün birden fazla türden devraldığı devralma hiyerarşileri oluşturamazsınız. Örneğin, varlık türüne sahip bir Book kavramsal modelde türetilmiş türler FictionBook tanımlayabilir ve NonFictionBook her birinin öğesinden Bookdevraldığı türleri tanımlayabilirsiniz. Ancak, hem hem NonFictionBook de FictionBook türlerinden devralan bir tür tanımlayamadınız.

Örnek

Aşağıdaki diyagramda, dört varlık türüne sahip kavramsal bir model gösterilmektedir: Book, FictionBook, Publisherve Author. Varlık FictionBook türü, varlık türünden devralınan Book türetilmiş bir türdür. türü FictionBook , Titleve özelliklerini devralır ISBN (Key)ve Revision adlı Genreek bir özellik tanımlar.

Diagram that shows a conceptual model with four entity types.

ADO.NET Entity Framework, kavramsal modelleri tanımlamak için kavramsal şema tanım dili (CSDL) olarak adlandırılan etki alanına özgü bir dil (DSL) kullanır. Aşağıdaki CSDL, FictionBooktüründen Book devralan bir varlık türünü tanımlar (yukarıdaki diyagramda olduğu gibi):

<EntityType Name="FictionBook" BaseType="BooksModel.Book" >
  <Property Type="String" Name="Genre" Nullable="false" />
</EntityType>

Ayrıca bkz.