Linq Insertar problema para principiantes
Pregunta
¿Por qué esto no funciona?
[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();
Este código genera una excepción
Must declare the scalar variable "@ID".
Solución
Deberías escribirlo de esta manera
dc.ExecuteCommand (@ " INSERT INTO [Order] (ID, OrderDate) VALUES ({0}, {1}) " ;, this.ID, this.OrderDate);
Dice
Este método es un paso a través Mecanismo para casos donde LINQ to SQL. no prevé adecuadamente una Escenario particular.
La sintaxis del comando es casi La misma sintaxis utilizada para crear. un comando de datos ADO.NET. Lo único La diferencia está en cómo los parámetros. se especifican Concretamente usted especificar los parámetros encerrándolos entre llaves ({& # 8230;}) y enuméralas a partir de 0. El parámetro es asociado con el igual numerado objeto en la matriz de parámetros.
El siguiente ejemplo abre un conexión y pasa una actualización de SQL comando al motor SQL.