質問
なぜこれが機能しないのですか?
[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})&quot ;, this.ID、this.OrderDate);
言う
このメソッドはパススルーです LINQ to SQLの場合のメカニズム を適切に提供していない 特定のシナリオ。
コマンドの構文はほぼ 作成に使用される構文と同じ ADO.NET DataCommand。唯一の 違いは、パラメータの方法です 指定されます。具体的には、 それらを囲むことによってパラメーターを指定する 中括弧({…})で列挙します 0から始まります。パラメータは 均等に番号付けされた パラメータ配列のオブジェクト。
次の例では、 接続し、SQL UPDATEを渡します SQLエンジンへのコマンド。
所属していません StackOverflow