2009-10-25 49 views
0

为什么这个东西不起作用?初学者的Linq插入问题

[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". 

回答

3

你应该写这样的

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

Check MSDN

它说

此方法是一种直通 机制的情况下LINQ到SQL 不能充分提供一种用于 特定场景。

该命令的语法几乎是 ,与用于创建ADO.NET DataCommand的 的语法相同。唯一的 区别在于如何指定参数 。具体而言,您通过将 括在花括号({...})中来指定参数,并从0开始枚举它们 。参数 与参数数组中相同编号的 对象关联。

以下示例打开 连接,并将SQL UPDATE 命令传递给SQL引擎。

+0

这很奇怪。 – anonymous 2009-10-25 17:16:37