PageRenderTime 42ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/Source/Bifrost.Fakes/Entities/EntityContext.cs

#
C# | 92 lines | 58 code | 15 blank | 19 comment | 0 complexity | 49ac847187b36732751960c864f9a121 MD5 | raw file
Possible License(s): CC-BY-SA-3.0
  1. #region License
  2. //
  3. // Copyright (c) 2008-2012, DoLittle Studios and Komplett ASA
  4. //
  5. // Licensed under the Microsoft Permissive License (Ms-PL), Version 1.1 (the "License")
  6. // With one exception :
  7. // Commercial libraries that is based partly or fully on Bifrost and is sold commercially,
  8. // must obtain a commercial license.
  9. //
  10. // You may not use this file except in compliance with the License.
  11. // You may obtain a copy of the license at
  12. //
  13. // http://bifrost.codeplex.com/license
  14. //
  15. // Unless required by applicable law or agreed to in writing, software
  16. // distributed under the License is distributed on an "AS IS" BASIS,
  17. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  18. // See the License for the specific language governing permissions and
  19. // limitations under the License.
  20. //
  21. #endregion
  22. using System;
  23. using System.Collections.Generic;
  24. using System.Linq;
  25. using Bifrost.Entities;
  26. namespace Bifrost.Fakes.Entities
  27. {
  28. public class EntityContext<T> : IEntityContext<T>
  29. {
  30. private readonly List<T> _entities;
  31. readonly List<T> _entitiesToDelete;
  32. public EntityContext()
  33. {
  34. _entities = new List<T>();
  35. _entitiesToDelete = new List<T>();
  36. }
  37. public EntityContext(IEnumerable<T> entities) : this()
  38. {
  39. Populate(entities);
  40. }
  41. public void Dispose()
  42. {}
  43. public IQueryable<T> Entities
  44. {
  45. get { return _entities.AsQueryable(); }
  46. }
  47. public void Attach(T entity)
  48. {
  49. _entities.Add(entity);
  50. }
  51. public void Insert(T entity)
  52. {
  53. _entities.Add(entity);
  54. }
  55. public void Update(T entity)
  56. {}
  57. public void Delete(T entity)
  58. {
  59. _entitiesToDelete.Add(entity);
  60. }
  61. public void Save(T entity)
  62. {
  63. }
  64. public bool CommitCalled = false;
  65. public void Commit()
  66. {
  67. foreach (var entity in _entitiesToDelete)
  68. _entities.Remove(entity);
  69. _entitiesToDelete.Clear();
  70. CommitCalled = true;
  71. }
  72. public void Populate(IEnumerable<T> entities)
  73. {
  74. _entities.AddRange(entities);
  75. }
  76. }
  77. }