سؤال
لماذا هذا الشيء لا تعمل؟
[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 إلى SQL لا تقدم على نحو كاف ل سيناريو معين.
وبناء الجملة للأمر يكاد يكون نفس بناء الجملة تستخدم لخلق وDataCommand ADO.NET. الوحيد الفرق هو في كيفية المعلمات يتم تحديد. وبوجه خاص، تعيين معلمات من قبل بتضمينها في الأقواس ({...}) وتعداد لهم بدءا من 0. المعلمة غير المرتبطة مرقمة على قدم المساواة الاعتراض في مجموعة المعلمات.
والمثال التالي يفتح اتصال ويمر UPDATE SQL الأمر إلى محرك SQL.
اقتباس فقرة>لا تنتمي إلى StackOverflow