我有我的模型在dbml文件中定义。我有一个Car实体,我想通过Form插入数据。表格使用这段代码: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事件探查器:
exec sp_executesql N'INSERT INTO [dbo].[Car]([Name], [CarClass], [CarState], [PricePerDay], [Capacity], [RegistrationNumber], [Description])
VALUES(@ P0,@ P1,@ P2,@ P3,@ P4,@ P5,@ P6)
SELECT CONVERT(智力,SCOPE_IDENTITY ())AS [value]',N'@ p0 varchar(8000),@ p1 varchar(8000),@ p2 varchar(8000),@ p3 decimal(18,2),@ p4 int,@ p5 varchar ),@ p6 varchar(8000)',@ p0 ='b',@ p1 ='B',@ p2 ='可用',@ 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上下文对象的更改范围有关的内容? – David
前两个插入(通过表单)被发送到SQL Server没有DELETE语句。实体的第三条记录添加了一个INSERT和两个DELETE。 –
你可以显示你的代码而不是仅仅描述它吗? – David