Tôi muốn tăng tốc hoạt động số lượng lớn insert
với NHibernate 3.2 trên Oracle 11g. Để làm điều này tôi đã cố gắngTăng tốc thao tác chèn hàng loạt với NHibernate
Session.Save(entity);
Session.Flush();
Session.Clear();
... trong foreach
vòng lặp của tôi, nhưng có một ngoại lệ gây ra bởi các đối tượng thiếu trong phiên:
thất bại trong việc uể oải khởi tạo một tập hợp các vai trò: MyClass.PropertyX, không có phiên hoặc phiên đã được đóng
nỗ lực khác là để thiết lập kích thước hàng loạt:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property>
<property name="connection.connection_string">xxx</property>
<property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
<property name="adonet.batch_size">50</property>
<property name="query.substitutions">true=1, false=0</property>
<property name="proxyfactory.factory_class">NHibernate.Bytecode.DefaultProxyFactoryFactory, NHibernate</property>
</session-factory>
</hibernate-configuration>
thêm tôi đặt Session.SetBatchSize(50)
trong mã của tôi một có ngoại lệ sau đây:
Không kích thước hàng loạt được xác định cho các nhà máy phiên, trạm trộn là người tàn tật. Đặt adonet.batch_size = 1 để bật tính năng nhóm.
Vị trí duy nhất mà ngoại lệ này được ném là NonBatchingBatcher, vì vậy có vẻ như phiên của tôi có trình theo dõi sai.
Có gì sai ở đây? Làm thế nào tôi có thể tăng tốc độ chèn hàng loạt với NHibernate (không sử dụng các phiên statlese)?
Trường hợp ngoại lệ đầu tiên của bạn là gì? Ngoài ra, nếu bạn thực hiện 'Flush' * bên trong vòng lặp *, bạn sẽ không được sắp xếp bất kỳ thứ gì. –
@Diego Mijelshon đã thêm thông báo ngoại lệ – deamon
@deamon là đa luồng này theo bất kỳ cách nào? – Newbie