質問

なぜこれが機能しないのですか?

[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);

MSDNを確認

言う

  

このメソッドはパススルーです   LINQ to SQLの場合のメカニズム   を適切に提供していない   特定のシナリオ。

     

コマンドの構文はほぼ   作成に使用される構文と同じ   ADO.NET DataCommand。唯一の   違いは、パラメータの方法です   指定されます。具体的には、   それらを囲むことによってパラメーターを指定する   中括弧({…})で列挙します   0から始まります。パラメータは   均等に番号付けされた   パラメータ配列のオブジェクト。

     

次の例では、   接続し、SQL UPDATEを渡します   SQLエンジンへのコマンド。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top