Добавление уникальных строк в таблицу базу данных. По существующему ID другой таблицы

Есть база данных. Извлечение происходит в отдельную таблицу. Далее работа идет с этой таблицей.

1) Есть метод извлечения данных из файла xl.

private DataTable LoadExelSheetToTable(string filename, string sheetName)
{

    DataTable table = new DataTable();
    using (System.Data.OleDb.OleDbConnection conncet = new System.Data.OleDb.OleDbConnection(
     "Provider = Microsoft.ACE.OLEDB.12.0; " +
     "Data Source = '" + filename + "';" +
     "Extended Properties=\"Excel 12.0; HDR=YES;IMEX=1\""))

    using (System.Data.OleDb.OleDbDataAdapter import =
      new System.Data.OleDb.OleDbDataAdapter
          ("select * from [" + sheetName + "$]", conncet))
        import.Fill(table);

    return table;
}

2) Перебираю строки в этой таблице и заношу их в соответствующие таблицы в базе данных

Symbol symbol1 = new Symbol(); //Создаю отдельный новый символ со своим ID и Name.
symbol1.Name = textBoxNameSymbol.Text;//Задаю имя. (Символ автоинкриментируемый)
HalfHour intervalHalfHour = new HalfHour();
symbol1.DayStocks = new Collection<DayStock>(); создаю коллекцию дней
foreach (DataRow t in table.Rows)
{
    DayStock interval = new DayStock();
    interval.Open = Convert.ToDecimal(t["Open"]);
    interval.Close = Convert.ToDecimal(t["Close"]);
    interval.Max = Convert.ToDecimal(t["High"]);
    interval.Min = Convert.ToDecimal(t["low"]);
    interval.Date = Convert.ToDateTime(t["Date"]);
    symbol1.DayStocks.Add(interval); записываю дни в коллекцию                        
}
db.symbol1.Add(symbol1.DayStocks); добавляю символ и его коллецию дней в базу данных.
db.SaveChanges();сохраняю изменения

Все это работает. Но не так как задумывалось. Каждый раз создается новый символ, с новым ID. Задача добавить строки в таблицу, при этом чтобы эти новые строки ссылались на существующий символ (на его ID). Пробовал делать выборку linq, по заданному Имени получаю необходимый ID. Остается только добавить новые строки в таблицу с выбранным ID. Пробовал добавлять через INSERT:

string constring = "Моя строка";
sqlConnection connection = new SqlConnection(constring);
        string Query = $"INSERT INTO dbo.FourHours(Open,Close,Max,Min,Date) VALUE ({intervalHalfHour.Open},{intervalHalfHour.Close},{intervalHalfHour.Max},{intervalHalfHour.Min},{intervalHalfHour.Date})";
        SqlCommand command = new SqlCommand(query, connection);
        command.Connection.Open();
        command.ExecuteNonQuery();
        command.Connection.Close();
    }
}

Это было предваритльная вставка без выборки с каким ID вставлять данные. НО она не хочет исполняться и в чем проблема я так и не могу понять. Данные в таблицу по идее должны попадать (пошагово смотрел значения в переменных есть). Возникает ошибка данные в запросе не соответствуют (она не может их вставить) если задавать напрямую обычные числа, ошибки не возникает. В общем, если вам понятен мой вопрос (постарался разжевать свои мысли-ходы) подскажите направление в котором двигаться.


Ответы (0 шт):