обработка вставок, которые включают соединительную таблицу с использованием EF6

Я разрабатываю форму, которая позволяет пользователю добавлять проектную запись на основе структуры в базу данных. В рамках спецификации пользователи хотят иметь возможность выбрать несколько вариантов из раскрывающегося списка. В моей базе данных я создал таблицу параметров и справочную таблицу для хранения параметров. Поскольку это отношение 1: 1, я создал таблицу соединений.

Design table
-------------
designid,
option

Option table
------------
optionid,
optionname

DesignDesignOption table
------------------------
designid,
optionid

Используя первый вариант EF db, у меня есть 2 модели, названные design и option. EF опустил соединительную таблицу.

Из выпадающего списка я получаю строковый массив идентификаторов, которые были выбраны, но я не уверен, как добавить запись в таблицу соединений. Нужно ли запрашивать БД, выбрать параметры, выбранные из базы данных на основе идентификаторов? Я действительно понятия не имею, как это сделать

мой код пока ниже. Пока я не добавил код для обработки таблицы соединений

public bool InsertDesign(Design design){
            if (!Validate(design)) {
                return false;
            }

            design.ModifiedDate = DateTime.Now;
            design.ModifiedByFullName = base.GetUsersFullName();
            design.ModifiedBy = base.GetUserLogin();

            _context.Designs.Add(design);
            _context.SaveChanges();

            return true;
        } 

Ответы на вопрос(1)

Решение Вопроса

Я предполагаю, что у вас есть список OptionIds, и там должно бытьOptions свойство навигации вDesign модель. Тогда у вас есть два варианта:

Первый вариант:

Как вы заявили, выберите параметры в соответствии со списком идентификаторов:

var optionIds = ...;
// Get options from database
List<Option> options = _context
    .Options
    .Where(m => optionIds.Contains(m.OptionId))
    .ToList();
design.Options = options;

_context.Designs.Add(design);
_context.SaveChanges();
Второй вариант:

Если вы не хотите выбирать данные из базы данных, вы можете установить состояние добавленной опции в значение Без изменений;

using System.Data.Entity;

var optionIds = ...;

// Initialize options according to Ids
List<Option> optionList = new List<Option>();
optionIds.ForEach(m => optionList.Add(new Option { OptionId = m})));

// Set options of desing and add it to context
design.Options = optionList;
_context.Designs.Add(design);

// Set state of options to unchanged to not affect their data and save changes
optionList.ForEach(m => _context.Entry(m).State = EntityState.Unchanged);
_context.SaveChanges();

Ваш ответ на вопрос