代码之家  ›  专栏  ›  技术社区  ›  user366312

初学者的LINQ插入问题

  •  0
  • user366312  · 技术社区  · 15 年前

    为什么这东西不起作用?

    [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 回复  |  直到 15 年前
        1
  •  3
  •   angrifel    15 年前

    你应该这样写

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

    Check MSDN

    它说

    此方法是一个传递 Linq to SQL的机制 没有充分规定 特殊情况。

    命令的语法几乎是 与用于创建 ADO.NET数据命令。唯一的 不同之处在于参数 指定。具体来说,你 通过封闭参数来指定参数 在大括号中()并枚举它们 从0开始。参数是 与等号 参数数组中的对象。

    下面的示例打开一个 连接并传递SQL更新 SQL引擎的命令。