PageRenderTime 8ms CodeModel.GetById 1ms app.highlight 3ms RepoModel.GetById 1ms app.codeStats 0ms

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

#
C# | 92 lines | 58 code | 15 blank | 19 comment | 0 complexity | 49ac847187b36732751960c864f9a121 MD5 | raw file
 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
23using System;
24using System.Collections.Generic;
25using System.Linq;
26using Bifrost.Entities;
27
28namespace Bifrost.Fakes.Entities
29{
30    public class EntityContext<T> : IEntityContext<T>
31    {
32        private readonly List<T> _entities;
33    	readonly List<T> _entitiesToDelete;
34
35        public EntityContext()
36        {
37            _entities = new List<T>();
38			_entitiesToDelete = new List<T>();
39        }
40
41        public EntityContext(IEnumerable<T> entities) : this()
42        {
43           Populate(entities);
44        }
45
46        public void Dispose()
47        {}
48
49        public IQueryable<T> Entities
50        {
51            get { return _entities.AsQueryable(); }
52        }
53
54        public void Attach(T entity)
55        {
56            _entities.Add(entity);
57        }
58
59        public void Insert(T entity)
60        {
61            _entities.Add(entity);
62        }
63
64        public void Update(T entity)
65        {}
66
67        public void Delete(T entity)
68        {
69			_entitiesToDelete.Add(entity);
70        }
71
72        public void Save(T entity)
73        {
74            
75        }
76
77        public bool CommitCalled = false;
78        public void Commit()
79        {
80			foreach (var entity in _entitiesToDelete)
81				_entities.Remove(entity);
82
83        	_entitiesToDelete.Clear();
84            CommitCalled = true;
85        }
86
87        public void Populate(IEnumerable<T> entities)
88        {
89            _entities.AddRange(entities);
90        }
91    }
92}