Tôi đã đăng số question tối hôm qua, điều này đã khiến tôi khám phá ra một sự cố lớn!Linq-to-Sql SubmitChanges không cập nhật các trường ... tại sao?
Tôi có một cột thập phân trong cơ sở dữ liệu của tôi được gọi là Đơn vị, bất kỳ lúc nào tôi đặt giá trị của cột thành KHÔNG CÓ, và GửiChỉnh sửa cột cập nhật với giá trị mới. Nếu tôi cố gắng đặt giá trị của cột thành ZERO, SubmitChanges không cập nhật cột.
data.Units = this.ReadProperty<decimal>(UnitsProperty);
data.UnitPrice = this.ReadProperty<decimal>(UnitPriceProperty);
data.Price = this.ReadProperty<decimal>(PriceProperty);
Tôi đã lấy một cái nhìn tại các log DataContext và tôi có thể thấy rằng trường với giá trị ZERO không được bao gồm trong truy vấn. Ngay cả khi tôi cố gắng mã cứng thay đổi, Linq bỏ qua nó.
data.Units = 0;
data.UnitPrice = 0;
data.Price = 0;
Không cần phải nói điều này đang giết chết tôi! Bất kỳ ý tưởng tại sao điều này xảy ra?
Giải pháp
tôi đã tìm ra vấn đề của tôi với sự giúp đỡ của cộng đồng SO. Vấn đề của tôi đã được gây ra bởi thực tế khi tôi tạo ra thực thể của tôi để đính kèm, giá trị mặc định của cột được thiết lập để không, do đó, khi nó đã cố gắng để gán giá trị cho số không ... LinqToSql nói hey ... không có gì thay đổi, vì vậy Tôi không cập nhật giá trị.
Những gì tôi đang làm gì bây giờ ... chỉ để làm cho nó làm việc như sau:
ctx.DataContext.InvoiceItems.Attach(data, true);
Đó dường như để buộc tất cả các giá trị để viết bản thân cơ sở dữ liệu. Điều này làm việc cho bây giờ.
Có bất kỳ phương pháp một phần nào trong lớp của bạn như OnCreated() hoặc OnChanged() gây nhiễu sóng không? Bạn đã kiểm tra ba lần mô hình của mình chưa? –
@Dave câu hỏi ngớ ngẩn ... nhưng bạn có ý gì khi kiểm tra đường ruột ba lần? – mattruma
Ý tôi là sớm và tôi chưa có cà phê. ;-) Tôi có nghĩa là bạn đã kiểm tra lại định nghĩa của tệp dbml của bạn (các kiểu dữ liệu, nullable, các mối quan hệ) đối với db của bạn? –