2009-11-05 19 views
6

Tôi đã được đưa vào nghiên cứu một vấn đề hiệu suất cơ sở dữ liệu với một ứng dụng mới sử dụng NHibernate. Tôi nhận thấy rằng trên một số bảng NH thực hiện chèn một hàng theo sau là bản cập nhật của cùng hàng với chính xác cùng một dữ liệu. Những gì tôi đã thu thập cho đến nay là các bản cập nhật sau khi chèn được thực hiện trên các bảng có nhiều mối quan hệ được xác định.Có thể chặn Cập nhật sau khi Chèn trong NHibernate không?

Trong mọi trường hợp, tôi có thể đã mong đợi rằng NH cho rằng dữ liệu giống nhau và ngăn chặn bản cập nhật bổ sung. Có cách nào để ngăn chặn cập nhật thêm này không?

+0

mã? cập nhật tất cả các cột sau khi chèn không phải là bình thường. – dotjoe

Trả lời

6

Có vẻ như bạn có mối quan hệ hai chiều trên một liên kết nhiều người.

Giải pháp cho vấn đề đó là thêm inverse="true" trên một mặt của mối quan hệ. Here is an example.

Việc chèn được thực hiện bởi đứa trẻ lưu dữ liệu của nó. Bản cập nhật được thực hiện bởi cha mẹ thiết lập parentId của bản ghi con trong cơ sở dữ liệu. Nếu mối quan hệ là uni-directional, chèn đầu tiên sẽ không có parentId và cập nhật sẽ được yêu cầu. Với một mối quan hệ hai hướng, bản cập nhật là không cần thiết như bạn mô tả. inverse="true" cho phụ huynh biết rằng đứa trẻ chịu trách nhiệm duy trì mối quan hệ, do đó ngăn ngừa việc cập nhật thêm.

+3

-1 vì điều này xảy ra trên các mối quan hệ không hai chiều. – BradLaney

Các vấn đề liên quan