güncellemek için başarısız. Nedense, ben isim yanında benim item
varlığın her alanını güncelleyebilirsiniz.Linq to SQL - Sql varlıklara linq güncellenmesi ile bazı sorunları yaşıyorum
İşte yazdığım iki basit testler şunlardır:
[TestMethod]
public void TestUpdateName() {
using (var context = new SimoneDataContext()) {
Item item = context.Items.First();
if (item != null) {
item.Name = "My New Name";
context.SubmitChanges();
}
}
}
[TestMethod]
public void TestUpdateMPN() {
using (var context = new SimoneDataContext()) {
Item item = context.Items.First();
if (item != null) {
item.MPN = "My New MPN";
context.SubmitChanges();
}
}
}
Maalesef TestUpdateName() aşağıdaki hata nedeniyle başarısız: System.Data.SqlClient.SqlException: Incorrect syntax near the keyword 'WHERE'..
Ve burada outputted SQL var:
UPDATE [dbo].[Items] SET WHERE ([Id] = @p0) AND ([CategoryId] = @p1) AND ([MPN] = @p2) AND ([Height] = @p3) AND ([Width] = @p4) AND ([Weight] = @p5) AND ([Length] = @p6) AND ([AdministrativeCost] = @p7) -- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [1] -- @p1: Input Int (Size = 0; Prec = 0; Scale = 0) [1] -- @p2: Input VarChar (Size = 10; Prec = 0; Scale = 0) [My New MPN] -- @p3: Input Decimal (Size = 0; Prec = 5; Scale = 3) [30.000] -- @p4: Input Decimal (Size = 0; Prec = 5; Scale = 3) [10.000] -- @p5: Input Decimal (Size = 0; Prec = 5; Scale = 3) [40.000] -- @p6: Input Decimal (Size = 0; Prec = 5; Scale = 3) [30.000] -- @p7: Input Money (Size = 0; Prec = 19; Scale = 4) [350.0000] -- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 3.5.30729.4926
olarak Gördüğünüz gibi, hiçbir güncelleme oluşturulmuyor (SET boş ...) Bu neden oluyor diye bir fikrim yok.
Ve zaten önceden
... EVET, masaItem
bir PK (id) vardır.
Teşekkür ederiz önceden!
Güncelleştirme: Hata, GetHashcode() geçersiz kılmadan kaynaklanıyor gibi görünüyor. Bu benim şimdiki uygulamasıdır:
return string.Format("{0}|{1}|{2}|{3}", Name, Id, UPC, AdministrativeCost).GetHashCode();
Eğer Ad ve bir diğer özelliğini değiştirmek ne olur? Hem mi, hem de diğer mülkiyeti mi günceller? Ayrıca oluşturulan kodda 'PropertyChanged' olayını tetikleyen Name setter? DataContext'in olay tetiklenmedikçe bir değişiklik olduğunu düşünmüyorum. –
İsim ve başka bir özelliği değiştirirseniz, yalnızca diğer özellik değişir. –