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".
Решение
Вы должны написать это так
dc.ExecuteCommand (@ " INSERT INTO [Order] (ID, OrderDate) VALUES ({0}, {1}) " ;, this.ID, this.OrderDate);
р>
Там написано
Этот метод является сквозным механизм для случаев, когда LINQ to SQL не обеспечивает адекватно конкретный сценарий.
Синтаксис команды почти такой же, как синтаксис, используемый для создания ADO.NET DataCommand. Единственный Разница в том, как параметры указаны. В частности, вы указать параметры, заключив их в фигурных скобках ({& # 8230;}) и перечислить их начиная с 0. Параметр ассоциируется с одинаково пронумерованными объект в массиве параметров.
В следующем примере открывается соединение и передает SQL ОБНОВЛЕНИЕ команда для движка SQL.