2011-12-02 31 views
16

Tôi đang gặp khó khăn để tìm ra NH ngoại lệ:Cập nhật hàng loạt trả về số hàng không mong đợi từ bản cập nhật; số hàng thực tế: 0; mong đợi: 1

cập nhật hàng loạt trở lại đếm hàng bất ngờ từ cập nhật; hàng thực tế đếm: 0; mong đợi: 1

My Dal mã:

public T Save(T item) 
     { 
      using (ISession session = NHibernateHelper.GetSession()) 
      { 
       using (var transaction = session.BeginTransaction()) 
       { 
        session.SaveOrUpdate(item); 

        transaction.Commit(); 

        return item; 
       } 
      } 
     } 

log4net My file:

lệnh 0: UPDATE Metadata_FriendDetails SET UserId = @ p0, Email = @ p1, Tên = @ p2 WHERE FriendId = @ p3; @ p0 = a358ab9d-d481-4bdd-8cb2-18ddc8898c70 [Loại: Hướng dẫn (0)], @ p1 = '[email protected]' [Loại: Chuỗi (4000)], @ p2 = 'myFriend' [Loại: Chuỗi (4000)], @ p3 = 2ea35658-edb1-43e3-b848-e1915d1042df [Type: Guid (0)]

2011-12-02 13: 06: 49.750 [Agent: adapter chạy thread cho thử nghiệm 'SaveFriendDetails_Test' với id '17016e48- 1ff4-4dea-8536-6aa3b24e5fb7' ] DEBUG NHibernate.AdoNet.AbstractBatcher - Đóng IDbCommand, mở IDbCommands: 0 2011/12/02 13: 06: 49.751 [Agent: adapter chạy thread cho test 'SaveFriendDetails_Test' với id '17016e48-1ff4-4dea-8536-6aa3b24e5fb7'] ERROR NHibernate.Event.Default.AbstractFlushingEventListener - Không thể đồng bộ hóa trạng thái cơ sở dữ liệu với phiên NHibernate.StaleStateException: Cập nhật hàng loạt trả về hàng không mong muốn đếm từ bản cập nhật; số hàng thực tế: 0; dự kiến: 1

Có ai thấy sự cố không?

TIA

+2

Một vài possiblites, đối tượng của bạn được tách ra và không bao giờ được actaully tạo ra trong databse, vì vậy không có hàng đối tượng gốc để cập nhật. Hoặc một cái gì đó đã thay đổi một giá trị trong bảng trước khi cập nhật của bạn. Tôi cho rằng đây là một hành động lừa đảo lặp lại? Đăng một số mã snipts về cách bạn đang tạo, cập nhật và lưu đối tượng sẽ hữu ích. – user957902

+0

Tôi nghĩ bạn nên viết nguồn ngoại lệ với ngoại lệ. Nó sẽ hữu ích hơn. – Joshi

+0

added.i không thể xem tại sao: NHibernate.Event.Default.AbstractFlushingEventListener - Không thể đồng bộ hóa trạng thái cơ sở dữ liệu với phiên NHibernate –

Trả lời

32

vấn đề là trên Lưu tôi không nên cung cấp giá trị id và cập nhật tôi phải cung cấp.

+1

Ngay sau khi bạn có thể, hãy chắc chắn và đánh dấu câu trả lời này là được chấp nhận để người khác biết có một giải pháp. –

3

Bạn phải đặt đối tượng Id thành null trước khi lưu.

dụ:

obj.setId(null); 
objectDao.save(obj); 
+0

nếu bạn có ID nguyên bản, bạn phải sử dụng: obj.setId (0) - để nó hoạt động. Không làm việc cho tôi, bởi vì tôi đã đặt Id thành -1 – bernhardrusch

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