为什么这件事不起作用?
[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".
答案 0 :(得分:3)
你应该像这样写
dc.ExecuteCommand(@"INSERT INTO [Order] (ID,OrderDate) VALUES ({0}, {1})", this.ID, this.OrderDate);
它说
此方法是传递方式 LINQ to SQL的情况机制 没有足够的规定 特殊情况。
命令的语法差不多 与用于创建的语法相同 一个ADO.NET DataCommand。唯一的 不同之处在于如何参数 是指定的。具体来说,你 通过将它们括起来指定参数 在大括号({...})中并枚举它们 从0开始。参数是 与同等编号相关联 参数数组中的对象。
以下示例打开一个 连接并传递SQL UPDATE 命令到SQL引擎。