Добавление уникальных строк в таблицу базу данных. По существующему 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 вставлять данные. НО она не хочет исполняться и в чем проблема я так и не могу понять. Данные в таблицу по идее должны попадать (пошагово смотрел значения в переменных есть). Возникает ошибка данные в запросе не соответствуют (она не может их вставить) если задавать напрямую обычные числа, ошибки не возникает. В общем, если вам понятен мой вопрос (постарался разжевать свои мысли-ходы) подскажите направление в котором двигаться.