Typzuordnung
Typzuordnung ist der Prozess, mit dem das Datenobjekt objekt-typen, die von Datenanbietern definiert sind, generischen Datentypen zugeordnet werden, die vom Visual Studio-Metadatenmodul definiert sind.
Die Zuordnung des Problems zu den Konzepten datenquellenspezifisch generischenb: g(„“)zuordnet, dasProblemtritt auf, wenn Sie Objekttypen verfügen, die Arten von anderen Typen sind, z. B. bei AS für einen eindeutigen Schlüssel eine Einschränkung oder ein Primärschlüssel ist eine Art von eindeutigen Schlüssel. Daher würde ein Typ sowohl datenquellenspezifischer (z. B. Constraint) oder präzise verallgemeinert (z. B. möglicherweise PrimaryKey, UniqueKeyoder ForeignKey). Wenn die allgemeinen Konzepte nicht präzise oder verallgemeinert gleichwertig sind, wenden Sie BG Problem zuordnend an.
Typzuordnung erfolgt in vier Typen auf:
1:1 Typzuordnung
1: g-Typzuordnung
b: 1 Typzuordnung
b: g-Typzuordnung
Die folgenden Abschnitte behandeln die einzelnen Fälle wiederum.
1:1 Typzuordnung
Eine Zuordnung ist der einfachste Fall 1:1 und tritt auf, wenn ein Datenanbieter einen einzelnen datenquellenspezifischen Typ aufweist, der für einen generischen zugeordneten Typ zugeordnet wird. Sie können 1:1 Zuordnung wie folgt anwenden, indem Sie das underlyingType - Attribut im MappedType-Element angeben, das den generischen zugeordneten Typ (MappedType-XML-Element), um datenquellenspezifischen Typ zugeordnet ist (Typ XML-Element). Dies wird im folgenden Beispiel veranschaulicht: xml
Das folgende XML aus der DataObjectSupport-XML-Datei zeigt die Deklaration der datenquellenspezifische Spalten an:
<Type name="Column" preferredOrdering="Database, Schema, Table, Id">
<IdentifierRef name="SubSchemaObjectTypeIdentifier" arguments="Table" />
<Properties>
<PropertyListRef name="ColumnProperties" />
<Property name="Computed" type="System.Boolean" />
</Properties>
<Services>
<ServiceRef name="SubSchemaObjectTypeObjectSelectorService" arguments="Table, Table, Column, ColumnSelectorMappings" />
<ServiceRef name="SubSchemaObjectTypeDSRefBuilderService" arguments="Table, 101, Field, 102" />
</Services>
</Type>
Das folgende XML aus der DataObjectSupport-XML-Datei wird die Deklaration eines generischen Typs der zugeordneten TableColumn an, der dem oben genannten Spaltentyp vom underlyingType Attribut zugeordnet ist:
<MappedType name="TableColumn" underlyingType="Column">
<Selection restrictions="{Catalog},{Schema},{Table},{Name}" />
<IdentifierRef name="MappedSubTypeIdentifier" arguments="Table" />
<Properties>
<Property name="Name" isIdentifierPart="true" />
<Property name="Ordinal" underlyingMember="Id" />
<PropertyListRef name="MappedSubTypeDataTypeProperties" />
<Property name="IsNullable" underlyingMember="Nullable" />
<Property name="IsComputed" underlyingMember="Computed" />
</Properties>
</MappedType>
Um das Beispiel zu erweitern, sollten Sie die Architektur von eindeutigen Einschränkungen in SQL Server. Für jede eindeutige Einschränkung gibt es immer einen Index, und alle Metadaten für das Verfügbarmachen von eindeutigen Einschränkungen wird über seinen Index bereitgestellt. Man kann dann sagen, dass eine eindeutige Schlüssel eine Art von Index in SQL Server ausgeführt wird. In Fällen, in denen ein generischer Begriff, der Index unterstützt, dass es sich möglicherweise auch ein eindeutiger Schlüssel ist, ist die Zuordnung 1:1 und problemlos behandelt wird.
1: g-Typzuordnung
Im Fall des Verknüpfen eines datenquellenspezifischen Typs in einen generischen zugeordneten Typ ist etwas komplizierter. Um zu veranschaulichen, betrachten Sie das oben genannte Beispiel (für das zuordnende 1:1 ist). In diesem Fall jedoch, ist der generische Typ zugeordnete UniqueKey. dies ergibt 1: zuordnendesg , worin als einzelner datenquellenspezifischer Typ (Index) mehr als einen generischen Typ darstellt ( UniqueKey und zugehörige Index). Ein Datenanbieter muss jetzt mehrere zugeordnete Typen zu einem Objekttyp zuordnen, wie im Folgenden dargestellt:
<MappedType name="TableUniqueKey" underlyingType="Index">
<Selection restrictions="{Catalog},{Schema},{Table},{Name}" filter="KeyType > 0" />
<IdentifierRef name="MappedSubTypeIdentifier" arguments="Table" />
<Properties>
<Property name="Name" isIdentifierPart="true" />
<Property name="IsPrimary" underlyingMember="KeyType">
<Conversion>
<Calculate expr="IIF({0} = 1, true, false)" exprType="System.Boolean" />
</Conversion>
</Property>
</Properties>
</MappedType>
<MappedType name="Index" underlyingType="Index">
<Selection restrictions="{Catalog},{Schema},{Table},{Name}" />
</MappedType>
Beachten Sie, dass filter-Attribut, das auf dem Konzept UniqueKey angegeben wird. Dies ist die beste Möglichkeit, eine Teilmenge von Instanzen des datenquellenspezifischen Typs zu identifizieren, der für das allgemeine Konzept darstellt.
b: 1 Typzuordnung
Die Groß-/Kleinschreibung von mehreren datenquellenspezifischen Typen einer Zuordnung Datenanbieter auf einen einzelnen generischen zugeordneten Typ erfordert das Angeben eines einzelnen zugeordneten Typs in mehreren zugrunde liegenden Typen. Nehmen Sie beispielsweise an, dass der Datenanbieter UniqueKey datenquellenspezifische Typen und ForeignKeydefiniert, die Arten von Einschränkungen sind. Anschließend wird angenommen, dass es sich um einen generischen zugeordnete Typ Constraintvorhanden ist, der alle Einschränkungstypen umgibt. Das Ergebnis ist b: 1 Zuordnung-dass ist, mehrere datenquellenspezifische Typen dargestellt durch einen einzelnen generischen zugeordneten Typ.
Durch das Aktivieren dieses Falls erfordert mehr Art von XML-Daten als vorherigen Fälle haben, wie im folgenden Beispiel dargestellt:
<Type name="ForeignKey" preferredOrdering="Database, Schema, Table, Name">
…
</Type>
<Type name="UniqueKey" preferredOrdering="Database, Schema, Table, Name">
…
</Type>
<MappedType name="Constraint" underlyingType="ForeignKey">
…
</MappedType>
<MappedType name="Constraint" underlyingType="UniqueKey">
…
</MappedType>
b: g-Typzuordnung
Schließlich wird die Groß- und Kleinschreibung von mehreren datenquellenspezifischen Typen der Zuordnung zu mehreren generischen Konzepten letztendlich eine Kombination aus 1:g und b: Zuordnungen 1. Angenommen, ein datenquellenspezifischer Datenanbieter die Konzepte von anderen eines Primärschlüssels sind Einschränkungen (z. B. von der eindeutigen Schlüssel und dem Fremdschlüssel). In diesem Fall könnte es PrimaryKey datenquellenspezifische Typen und Constraintgeben. Jetzt wird angenommen, dass es sich um allgemeine Konzepte und UniqueKeyForeignKeygibt, in denen das UniqueKey Konzept der primären und eindeutigen Schlüsseln umgibt. Dies ist zuordnendes datenquellenspezifische b: g , in denen mehrere Typen durch mehrere generische zugeordnete Typen dargestellt werden.
Um diesen Fall zu behandeln, wendet der Datenanbieter diese Zuordnung indem Sie mehrere verknüpfte Typen mit mehreren datenquellenspezifischen Typen angeben, wie im folgenden XML-Code wird gezeigt:
<Type name="PrimaryKey" preferredOrdering="Database, Schema, Table, Name">
…
</Type>
<Type name="Constraint" preferredOrdering="Database, Schema, Table, Name">
…
</Type>
<MappedType name="UniqueKey" underlyingType="PrimaryKey">
…
</MappedType>
<MappedType name="UniqueKey" underlyingType="Constraint">
<Selection restrictions="{Catalog},{Schema},{Table},{Name}" filter="IsUnique = true" />
</MappedType>
<MappedType name="ForeignKey" underlyingType="Constraint">
<Selection restrictions="{Catalog},{Schema},{Table},{Name}" filter="IsForeign = true" />
</MappedType>
Siehe auch
Konzepte
Bezeichner-und Eigenschaft-zuordnen
Zuordnungs-Objekttyp-Bezeichner und Eigenschaften mit generischen Typen