Opublikowałem ten question wczoraj wieczorem, co doprowadziło mnie do odkrycia problemu ogromnego!Linq-to-Sql SubmitChanges nie aktualizuje pól ... dlaczego?
Mam kolumnę dziesiętną w mojej bazie danych o nazwie Jednostki, w dowolnym momencie ustawiam wartość kolumny na NON ZERO, a SubmitChanges aktualizuje kolumnę z nową wartością. Jeśli próbuję ustawić wartość kolumny na ZERO, zmiany właściwości SubmitChanges nie aktualizują kolumny.
data.Units = this.ReadProperty<decimal>(UnitsProperty);
data.UnitPrice = this.ReadProperty<decimal>(UnitPriceProperty);
data.Price = this.ReadProperty<decimal>(PriceProperty);
Wziąłem okiem na log DataContext i widzę, że pole z wartością zero nie jest uwzględnione w zapytaniu. Nawet jeśli spróbuję zmienić kod Linq, Linq go ignoruje.
data.Units = 0;
data.UnitPrice = 0;
data.Price = 0;
Nie trzeba dodawać, że to mnie zabija! Jakieś pomysły, dlaczego tak się dzieje?
Rozwiązanie
zorientowali się mój problem z pomocą Wspólnoty, tak. Mój problem powodowany był faktem, kiedy stworzyłem mój obiekt do dołączenia, domyślna wartość kolumny została ustawiona na zero, więc gdy próbowałem przypisać wartość do zera ... LinqToSql mówi hej ... nic się nie zmieniło, więc Nie aktualizuję wartości.
Co robię teraz ... po prostu sprawiają, że praca jest następujący:
ctx.DataContext.InvoiceItems.Attach(data, true);
To wydaje się zmusić wszystkie wartości napisać się do bazy danych. To działa na razie.
Którykolwiek z metod częściowych na twojej klasie, takich jak OnCreated() lub OnChanged() powoduje zakłócenia? Czy potrójnie sprawdziłeś swój model? –
@Dave Głupie pytanie ... ale co masz na myśli, mówiąc potrójnie gut-check? – mattruma
Mam na myśli, że jest wcześnie i jeszcze nie miałem kawy. ;-) Mam na myśli to, czy dwukrotnie sprawdziłeś definicję pliku dbml (typy danych, zerowalne, relacje) z bazą danych? –