Linq Вставить задачу для начинающих - PullRequest
0 голосов
/ 25 октября 2009

Почему эта штука не работает?

[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 Ответ

3 голосов
/ 25 октября 2009

Вы должны написать это так

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

Проверьте MSDN

Там написано

Этот метод является сквозным механизм для случаев, когда LINQ to SQL не обеспечивает адекватно конкретный сценарий.

Синтаксис команды почти такой же, как синтаксис, используемый для создания ADO.NET DataCommand. Единственный Разница в том, как параметры указаны. В частности, вы указать параметры, заключив их в фигурные скобки ({…}) и перечислить их начиная с 0. Параметр ассоциируется с одинаково пронумерованными объект в массиве параметров.

В следующем примере открывается соединение и передает SQL ОБНОВЛЕНИЕ команда для движка SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...