Có ai có một số thông tin tốt về cách sử dụng phương thức .SaveChanges() không?Cách tốt nhất để sử dụng phương thức .SaveChanges() trong các dịch vụ dữ liệu ADO.Net là gì?
Tôi gặp phải nhiều sự cố khi cố sử dụng phương thức .SaveChanges() trên đối tượng ngữ cảnh dữ liệu của tôi. Tôi đang lấy dữ liệu từ một nguồn dữ liệu hiện có, tạo các đối tượng EntityFramework/DataService thích hợp, điền các đối tượng đã tạo với dữ liệu, thêm các đối tượng đó vào ngữ cảnh và sau đó lưu dữ liệu đó bằng cách gọi .SaveChanges.
Các kịch bản mà tôi đã đưa ra (và các vấn đề liên quan đến chúng) là như vậy ... Trong mỗi trường hợp, tôi có vòng lặp foreach đang lấy dữ liệu từ các hàng trong một DataTable và tạo các đối tượng, đính kèm chúng với bối cảnh khi họ đi. (lưu ý: ba đối tượng là "thành viên" và hai "địa chỉ" được đính kèm qua cuộc gọi SetLink) - về cơ bản đây là công cụ chuyển đổi để lấy dữ liệu từ một kho dữ liệu và đưa nó vào kho dữ liệu được Dịch vụ Dữ liệu tiếp xúc.
- .SaveChanges Gọi() mà không cần bất kỳ thông số một lần vào cuối vòng lặp foreach (tức là bên ngoài vòng lặp)
- lỗi OutOfMemory khoảng 1/3 đường (30.000 ra 90.000 tiết kiệm) - không chắc chắn làm thế nào điều đó xảy ra mặc dù mỗi tiết kiệm mục là một cuộc gọi SQL riêng biệt đến cơ sở dữ liệu, những gì đang có để chạy ra khỏi bộ nhớ trên?
- .SaveChanges Gọi() mà không cần bất kỳ thông số lần mỗi vòng lặp
- này hoạt động, nhưng phải mất absolutly mãi mãi (8 giờ cho 90.000 tiết kiệm)
- .SaveChanges Gọi (SaveChangesOption.Batch) một lần ở cuối vòng lặp foreach
- Lỗi OutOfMemory giống nhau, nhưng không lưu vào cơ sở dữ liệu
- .SaveChanges Gọi (SaveChangesOption.Batch) một lần mỗi vòng lặp không tìm thấy
- 404 lỗi
- Gọi .SaveChanges (SaveChangesOption.Batch) một lần mỗi 10 vòng
- 400 Lỗi yêu cầu Xấu (Thỉnh thoảng)
- OutOfMemory sau một số lần xuất hiện
- Một số lần thử ngẫu nhiên để tạo ngữ cảnh một lần trên mỗi vòng lặp hoặc biến nó thành một biến ở đầu vòng lặp hoặc biến nó thành một biến thành viên riêng tư có sẵn.
- kết quả khác nhau, không thể xác định số lượng, không ai thực sự là tốt
phương pháp ưa thích gọi .SaveChanges() từ một đối tượng khách hàng khi thực hiện tải dữ liệu lớn như thế này là gì? Có cái gì tôi không nhận được về cách .SaveChanges() hoạt động? Bất cứ ai có thể cung cấp thêm chi tiết về cách một lần nên được sử dụng chức năng này và những gì (nếu có) là những hạn chế để tiết kiệm dữ liệu thông qua dịch vụ dữ liệu?Có bất kỳ phương pháp hay nhất nào quanh cuộc gọi phương thức .SaveChanges() không? Có bất kỳ tài liệu đặc biệt tốt nào về cuộc gọi phương thức .SaveChanges() không?
bạn đang triển khai "thay đổi" nào? Tại sao 90.000 tiết kiệm? Có lẽ bạn nên thử sao chép SQL, nếu bạn chỉ cần truyền dữ liệu? chỉ là một ý nghĩ. – D3vtr0n
chỉ để làm rõ, khi bạn nói "một lần cho mỗi vòng lặp", bạn có nghĩa là một cuộc gọi cho mỗi vòng lặp * lặp *? – Veverke