Уникальные ключи в Платформе Объекта 4

Существующая схема DB имеет уникальный, неосновной, ключи и некоторые внешние ключи, которые полагаются на них.

Действительно ли возможно определить уникальные ключи, которые не являются первичными ключами в Платформе Объекта v4? Как?

19
задан Asaf R 10 April 2010 в 21:10
поделиться

1 ответ

Я попытался определить следующие таблицы:

  • Заказы [Id (основной, идентификатор), ClientName, FriendlyOrderNum (уникальный)]
  • OrderItems [Id (основной, идентификатор), FriendlyOrderNum (уникальный), ItemName]

И отображение внешнего ключа из OrderItems.FriendlyOrderNum (Mant) в Orders.FriendlyOrderNum (один).

Если возможны уникальные непервичные ключи, должен работать следующий SSDL:

<Schema Namespace="EfUkFk_DbModel.Store" Alias="Self" Provider="System.Data.SqlClient" ProviderManifestToken="2008" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns="http://schemas.microsoft.com/ado/2009/02/edm/ssdl">
    <EntityContainer Name="EfUkFk_DbModelStoreContainer">
      <EntitySet Name="OrderItems" EntityType="EfUkFk_DbModel.Store.OrderItems" store:Type="Tables" Schema="dbo" />
      <EntitySet Name="Orders" EntityType="EfUkFk_DbModel.Store.Orders" store:Type="Tables" Schema="dbo" />
    </EntityContainer>
    <EntityType Name="OrderItems">
      <Key>
        <PropertyRef Name="RowId" />
      </Key>
      <Property Name="RowId" Type="bigint" Nullable="false" StoreGeneratedPattern="Identity" />
      <Property Name="OrderNum" Type="char" Nullable="false" MaxLength="5" />
      <Property Name="ItemName" Type="varchar" MaxLength="100" />
    </EntityType>
    <!--Errors Found During Generation:
  warning 6035: The relationship 'FK_OrderItems_Orders' has columns that are not part of the key of the table on the primary side of the relationship. The relationship was excluded.
  -->
    <EntityType Name="Orders">
      <Key>
        <PropertyRef Name="RowId" />
      </Key>
      <Property Name="RowId" Type="bigint" Nullable="false" StoreGeneratedPattern="Identity" />
      <Property Name="ClientName" Type="varchar" MaxLength="100" />
      <Property Name="OrderNum" Type="char" Nullable="false" MaxLength="5" />
    </EntityType>

  <!-- AsafR -->
    <Association Name="FK_OrderItems_Orders">
      <End Role="Orders" Type="EfUkFk_DbModel.Store.Orders" Multiplicity="1">
      </End>
      <End Role="OrderItems" Type="EfUkFk_DbModel.Store.OrderItems" Multiplicity="*" />
      <ReferentialConstraint>
        <Principal Role="Orders">
          <PropertyRef Name="OrderNum" />
        </Principal>
        <Dependent Role="OrderItems">
          <PropertyRef Name="OrderNum" />
        </Dependent>
      </ReferentialConstraint>
    </Association>
  </Schema></edmx:StorageModels>

Не работает. Также нет возможности добавить дополнительные элементы в .

Я пришел к выводу, что непервичные уникальные ключи не поддерживаются в EF 4.

8
ответ дан 30 November 2019 в 02:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: