begränsning av referensintegritet
En referensintegritetsbegränsning i entitetsdatamodellen (EDM) liknar en referensintegritetsbegränsning i en relationsdatabas. På samma sätt som en kolumn (eller kolumner) från en databastabell kan referera till den primära nyckeln i en annan tabell kan en egenskap (eller egenskaper) av en entitetstyp referera till entitetsnyckeln för en annan entitetstyp. Den entitetstyp som refereras kallas för begränsningens huvudslut . Entitetstypen som refererar till huvudslutet kallas för villkorets beroende slut .
En begränsning för referensintegritet definieras som en del av en association mellan två entitetstyper. Definitionen för en referensintegritetsbegränsning anger följande information:
Begränsningens huvudslut. (En entitetstyp vars entitetsnyckel refereras till av den beroende änden.)
Entitetsnyckeln för huvudslutet.
Villkorets beroende slut. (En entitetstyp som har en egenskap eller egenskaper som refererar till entitetsnyckeln för huvudslutet.)
Referensegenskapen eller egenskaperna för den beroende änden.
Syftet med referensintegritetsbegränsningar i EDM är att säkerställa att giltiga associationer alltid finns. Mer information finns i egenskapen sekundärnyckel.
Exempel
Diagrammet nedan visar en konceptmodell med två associationer: WrittenBy
och PublishedBy
. Entitetstypen Book
har en egenskap, PublisherId
, som refererar till entitetsnyckeln för Publisher
entitetstypen när du definierar en referensintegritetsbegränsning för associationen PublishedBy
.
ADO.NET Entity Framework använder ett domänspecifikt språk (DSL) som kallas CSDL (Conceptual Schema Definition Language) för att definiera konceptuella modeller. Följande CSDL definierar en referensintegritetsbegränsning för associationen PublishedBy
som visas i konceptmodellen ovan.
<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>