#region License Information /* HeuristicLab * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL) * * This file is part of HeuristicLab. * * HeuristicLab is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * HeuristicLab is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with HeuristicLab. If not, see . */ #endregion using System.Data.Linq; using HeuristicLab.Hive.Tracing; namespace HeuristicLab.Hive.Server.LINQDataAccess { public abstract class BaseDao { private static ContextFactory contextFactory = new ContextFactory(); public static HiveDataContext Context { get { return contextFactory.CurrentContext as HiveDataContext; } } protected void CommitChanges() { try { Context.SubmitChanges(ConflictMode.ContinueOnConflict); } catch (ChangeConflictException e) { Logger.Warn("Concurrency Exception! " + e.Message); foreach (ObjectChangeConflict conflict in Context.ChangeConflicts) { Logger.Info("Conflicted: "); foreach (MemberChangeConflict memberChangeConflict in conflict.MemberConflicts) { Logger.Info(" Member in Conflict: " + memberChangeConflict.Member.Name); Logger.Info(" Database Value: " + memberChangeConflict.DatabaseValue); Logger.Info(" Original value: " + memberChangeConflict.OriginalValue); Logger.Info(" Current value: " + memberChangeConflict.CurrentValue); } conflict.Resolve(RefreshMode.KeepChanges); } try { Context.SubmitChanges(); } catch { Logger.Error("Could not resolve conflict!"); } } } public abstract TDatabaseEntity DtoToEntity(TBusiness source, TDatabaseEntity target); public abstract TBusiness EntityToDto(TDatabaseEntity source, TBusiness target); } }