Bu akşam büyük sorununu keşfetmem için bana yol açtığı bu question gönderdim!Linq-to-Sql SubmitChanges alanları güncelleştirmiyor ... neden?
Veritabanımda Units adında bir ondalık sütunu var, her zaman sütunun değerini bir NON SIFIR olarak ayarlıyorum ve Sütun güncellemelerini yeni değerle birlikte gönder. Sütunun değerini SIFIR olarak ayarlamaya çalışırsam, SubmitChanges sütunu güncelleştirmez.
data.Units = this.ReadProperty<decimal>(UnitsProperty);
data.UnitPrice = this.ReadProperty<decimal>(UnitPriceProperty);
data.Price = this.ReadProperty<decimal>(PriceProperty);
Ben DataContext günlüğüne bir göz atmış ve ben SIFIR değeri ile alan sorguya dahil olmadığını görebilirsiniz. Hard kodu denedim bile Linq değişmez.
data.Units = 0;
data.UnitPrice = 0;
data.Price = 0;
Bunun beni öldürdüğünü söylemeye gerek yok! Bunun neden olduğu hakkında bir fikrin var mı?
Çözüm
SO topluluk yardımıyla sorunumu çözdüm. Benim varlığımın eklenmesini oluşturduğumda benim sorunum oluşuyordu, sütunun varsayılan değeri sıfıra ayarlandı, bu yüzden değeri sıfıra atamaya çalıştığında ... LinqToSql diyor ki ... hiçbir şey değişmedi, yani Ben değeri güncellemiyorum. Tüm değerleri zorlamak gibi görünüyor
ctx.DataContext.InvoiceItems.Attach(data, true);
veritabanına kendilerini yazmak için: sadece iş yapmak için şimdi yapıyorum
... şudur. Bu şimdilik çalışıyor.
Sınıfınızdaki, OnCreated() veya OnChanged() gibi enterferanslara neden olan kısmi yöntemlerden herhangi biri var mı? Modelini üç kere kontrol ettin mi? –
@Dave Silly sorusu ... ama üç kere bağırsak kontrolünden ne demek istiyorsun? – mattruma
Daha erken olduğunu ve henüz kahve içmedim. ;-) Dbml dosyanızın db'ye karşı tanımını (datatypes, nullable, relations) iki kez kontrol ettin mi? –