Hallo,
ich nutze für die Speicherung von meinen Daten NHibernate. Leider habe ich hin und wieder auch mit grösseren Datenmengen zu tun.
Mit NHibernate bekomme ich aber immer eine "Out of Memory-Exception". Ich weiss langsam nicht mehr, was ich noch tun soll. Eigentlich sind doch 1.000 Datensatze nicht so viel...
Beide Methoden lösen eine Exception aus. Die eine früher, die andere später. Insgesamt muss ich ca. 1.000.000 Datensätze durchschleusen. Bei max. 20.000 ist aber spätestens bei beiden Schluss...
Mapping:
Hat jemand eine Idee wie ich die Daten in die Datenbank bekomme? Ich denke NHibernate sollte das doch hinbekommen...
Vielen Dank für Eure Hilfe,
Tucca
ich nutze für die Speicherung von meinen Daten NHibernate. Leider habe ich hin und wieder auch mit grösseren Datenmengen zu tun.
Mit NHibernate bekomme ich aber immer eine "Out of Memory-Exception". Ich weiss langsam nicht mehr, was ich noch tun soll. Eigentlich sind doch 1.000 Datensatze nicht so viel...
Code:
public static void SaveCountedDataToDatabase(object data) { if (!_initDone) Init(); using (ISession session = NHibernateHelper.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { session.SaveOrUpdate(data); transaction.Commit(); } } } public static void SaveCountedDataListToDatabase(List<CountedDataBase> data) { if (!_initDone) Init(); int count = 0; int next = 1; ISession session = NHibernateHelper.OpenSession(); ITransaction transaction = session.BeginTransaction(); for (int i = count; count <= data.Count; i++ ) { if (i == next * 1000) { transaction.Commit(); session = NHibernateHelper.OpenSession(); transaction = session.BeginTransaction(); next++; } session.SaveOrUpdate(data[i]); } transaction.Commit(); }
Code:
public class CountedDataBase { #region Properties public virtual int VehjNo { get; set; } public virtual int IndexVehjNo { get; set; } public virtual int IndexVisum { get; set; } public virtual int Id { get; set; } public virtual int PeriodId { get; set; } public virtual int PeriodOperatingDayId { get; set; } public virtual int StopNo { get; set; } public virtual string StopCode { get; set; } public virtual int StopPointNo { get; set; } /// <summary> /// Referenz 1.1.1970 /// </summary> public virtual int VehjDate { get; set; } public virtual int CurrentDeparture { get; set; } public virtual int Departure { get; set; } public virtual double Board { get; set; } public virtual double Alight { get; set; } public virtual double Occupation1 { get; set; } public virtual double Occupation2 { get; set; } public virtual double Capacity1 { get; set; } public virtual double Capacity2 { get; set; } #endregion }
Code:
<class name="CountedDataBase" table="counteddata" lazy="false"> <composite-id> <key-property column="VehjNo" type="Int32" name="VehjNo" /> <key-property column="IndexVehjNo" type="Int32" name="IndexVehjNo" /> <key-property column="PeriodId" type="Int32" name="PeriodId" /> <key-property column="VehjDate" type="Int32" name="VehjDate" /> </composite-id> <property name="IndexVisum" type="Int32" /> <property name="PeriodOperatingDayId" type="Int32" /> <property name="StopNo" type="Int32" /> <property name="StopCode" type="String" /> <property name="StopPointNo" type="Int32" /> <property name="CurrentDeparture" type="Int32" /> <property name="Departure" type="Int32" /> <property name="Board" type="Double" /> <property name="Alight" type="Double" /> <property name="Occupation1" type="Double" /> <property name="Occupation2" type="Double" /> <property name="Capacity1" type="Double" /> <property name="Capacity2" type="Double" />
Hat jemand eine Idee wie ich die Daten in die Datenbank bekomme? Ich denke NHibernate sollte das doch hinbekommen...
Vielen Dank für Eure Hilfe,
Tucca
Comment