Free cookie consent management tool by TermsFeed Policy Generator

source: branches/3.2/sources/HeuristicLab.Hive.Server.LINQDataAccess/3.2/BaseDao.cs @ 3931

Last change on this file since 3931 was 3931, checked in by kgrading, 14 years ago

added minor speedups and better transaction handling to the server (#828)

File size: 1.5 KB
RevLine 
[2904]1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
[3578]5using System.Data.Linq;
6using HeuristicLab.Tracing;
[2904]7
8namespace HeuristicLab.Hive.Server.LINQDataAccess {
[3011]9  public abstract class BaseDao<TBusiness, TDatabaseEntity> {
[2904]10    public static HiveDataContext Context {
11      get {
12        return ContextFactory.Context;
13      }
14    }
[3011]15
[3578]16    protected void CommitChanges() {
[3931]17      //TODO: DoWhile
[3578]18      try {
19        Context.SubmitChanges(ConflictMode.ContinueOnConflict);
20      } catch (ChangeConflictException e) {
21        Logger.Warn("Concurrency Exception! " + e.Message);
[3931]22        foreach (ObjectChangeConflict conflict in Context.ChangeConflicts) {
23          Logger.Info("Conflicted: ");
24          foreach (MemberChangeConflict memberChangeConflict in conflict.MemberConflicts) {
25            Logger.Info("    Member in Conflict: " + memberChangeConflict.Member.Name);
26            Logger.Info("    Database Value: " + memberChangeConflict.DatabaseValue);
27            Logger.Info("    Original value: " + memberChangeConflict.OriginalValue);
28            Logger.Info("    Current value: " + memberChangeConflict.CurrentValue);             
29          }
[3578]30          conflict.Resolve(RefreshMode.KeepChanges);
31        }
[3931]32        Context.SubmitChanges(ConflictMode.FailOnFirstConflict);
[3578]33      }
34    }
35
[3011]36    public abstract TDatabaseEntity DtoToEntity(TBusiness source, TDatabaseEntity target);
37    public abstract TBusiness EntityToDto(TDatabaseEntity source, TBusiness target);
38
[2904]39  }
40}
Note: See TracBrowser for help on using the repository browser.