Linq为初学者插入问题

时间:2009-10-25 17:03:16

标签: linq insert

为什么这件事不起作用?

[Database(Name="Relationships_Test")]
[Table(Name = "Order")]
public class Order
{
 [Column(Name="ID", IsPrimaryKey=true)]
 public int ID { get; set; }

 [Column(Name = "OrderDate")]
 public DateTime OrderDate { get; set; }

 public void Save()
 {
  DataContext dc = new DataContext(@"Data Source=.\sqlexpress;Initial Catalog=Relationships_Test;Integrated Security=True");

  dc.ExecuteCommand(@"INSERT INTO [Order] (ID,OrderDate) VALUES (@ID,@OrderDate)", this.ID, this.OrderDate);
 }
}


    Order o = new Order();
o.ID = 3;
    o.OrderDate = DateTime.Parse("12/31/2999");
    o.Save();

此代码生成异常

Must declare the scalar variable "@ID".

1 个答案:

答案 0 :(得分:3)

你应该像这样写

dc.ExecuteCommand(@"INSERT INTO [Order] (ID,OrderDate) VALUES ({0}, {1})", this.ID, this.OrderDate);

Check MSDN

它说

  

此方法是传递方式   LINQ to SQL的情况机制   没有足够的规定   特殊情况。

     

命令的语法差不多   与用于创建的语法相同   一个ADO.NET DataCommand。唯一的   不同之处在于如何参数   是指定的。具体来说,你   通过将它们括起来指定参数   在大括号({...})中并枚举它们   从0开始。参数是   与同等编号相关联   参数数组中的对象。

     

以下示例打开一个   连接并传递SQL UPDATE   命令到SQL引擎。