У меня есть моя модель, определенная в файле dbml. У меня есть объект Car, которому я хочу вставить данные через форму. Форма использует этот блок кода:LINQ to SQL в выпуске C# с InsertOnSubmit
private void button1_Click(object sender, EventArgs e)
{
Car CarToCreate = new Car();
CarToCreate.Name = newCarNameTextBox.Text;
CarToCreate.CarClass = newCarClassComboBox.SelectedItem.ToString();
CarToCreate.PricePerDay = Convert.ToDecimal(newCarPriceTextBox.Text);
CarToCreate.Capacity = Convert.ToInt32(newCarCapacityTextBox.Text);
CarToCreate.RegistrationNumber = newCarRegNumberTextBox.Text;
CarToCreate.Description = newCarDescriptionTextBox.Text;
CarToCreate.CarState = "Available";
Context.Cars.InsertOnSubmit(CarToCreate);
Context.SubmitChanges();
CarModifiedEvent();
this.Close();
}
Первые две записи вставлены успешно. Когда я пытаюсь вставить третью строку два предыдущих, удаляются (строка Context.Cars.InsertOnSubmit). Я был в состоянии отслеживать запросы в SQL Profiler:
exec sp_executesql N'INSERT INTO [dbo].[Car]([Name], [CarClass], [CarState], [PricePerDay], [Capacity], [RegistrationNumber], [Description])
VALUES (@ p0, @ p1, @ p2, @ p3, @ p4, @ p5, @ p6)
конвертируйте (Int, SCOPE_IDENTITY()) AS [значение] ', N' @ p0 varchar (8000), @ p1 varchar (8000), @ p2 varchar (8000), @ p3 decimal (18,2), @ p4 int, @ p5 varchar (8000), @ p6 varchar (8000) ', @ p0 =' b ', @ p1 =' B ', @ p2 =' Available ', @ p3 = 2.00, @ p4 = 2, @ p5 =' 2 ', @ p6 = '2'
exec sp_executesql N'DELETE FROM [dbo].[Car] WHERE ([CarID] = @p0) AND ([Name] = @p1) AND ([CarClass] = @p2) AND ([CarState] = @p3) AND ([PricePerDay] = @p4) AND ([Capacity] = @p5) AND ([RegistrationNumber] = @p6) AND ([Description] = @p7)',N'@p0 int,@p1 varchar(8000),@p2 varchar(8000),@p3 varchar(8000),@p4 decimal(18,2),@p5 int,@p6 varchar(8000),@p7 varchar(8000)',@p0=35,@p1='a',@p2='A',@p3='Available',@p4=1.00,@p5=1,@p6='1',@p7='1'
Почему первые две записи только что вставлены, а третья запись удаляет все предыдущие? Я что-то упускаю?
Спасибо!
Я вижу только одну вставку, выполняемую в коде. Где другие два? Как они выполняются в отношении используемых объектов и объема изменений в объекте DB Context? – David
Первые две вставки (через форму) отправляются на SQL Server без операторов DELETE. Третье дополнение записи к объекту отправляет один INSERT и два DELETE. –
Можете ли вы показать свой код, а не просто его описать? – David