Задать имена столбцов для составного внешнего ключа «один к одному» - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь создать однонаправленное сопоставление обязательных отношений (один-к-нулю-одному) с использованием Entity Framework версии 6. Но до сих пор я не смог настроить его с помощьюсвободно API, или найти правильную документацию о том, как.

Таблица event (основной) имеет составной первичный ключ.Таблица event_autostart (зависимая) ссылается на эту таблицу.
В отображении оба имени столбца необходимо будет установить вручную, поскольку имена не соответствуют тому, что EF6 установил бы по умолчанию.

Желаемая структура базы данных выглядит следующим образом:

CREATE TABLE `event` (
    `id`    INTEGER NOT NULL,
    `name`  TEXT NOT NULL,
    `license_key`   TEXT,
    PRIMARY KEY(`id`,`license_key`)
);

CREATE TABLE `autostart_event` (
    `license_key`   TEXT NOT NULL,
    `event_id`  INTEGER NOT NULL,
    PRIMARY KEY(`license_key`),
    FOREIGN KEY(`license_key`) REFERENCES `event`(`license_key`) ON UPDATE CASCADE,
    FOREIGN KEY(`event_id`) REFERENCES `event`(`id`) ON UPDATE CASCADE
);

Мой текущий свободный код выглядит так:

        // Fluent API event table mapping properties
        var eventMapping = modelBuilder.Entity<Event>().ToTable("event");
        eventMapping.HasKey(@event => new { @event.Id, @event.LicenseKey }).Property(@event => @event.Id).HasColumnName("id").HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
        eventMapping.Property(@event => @event.Name).HasColumnName("name").IsRequired();
        eventMapping.Property(@event => @event.LicenseKey).HasColumnName("license_key");

        // Fluent API event_autostart table mapping properties
        var autoStartMapping = modelBuilder.Entity<AutoStart>().ToTable("autostart_event");
        autoStartMapping.HasKey(autoStart => autoStart.LicenseKey).Property(autoStart => autoStart.LicenseKey).HasColumnName("license_key").HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
        autoStartMapping.HasRequired(autoStart => autoStart.Event).WithRequiredDependent();

Но я не могу понять, как конкретносопоставьте имена столбцов для таблицы event_autostart, поскольку внешний ключ является составным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...