internal void AddResource(object resource) { IList entitySetInstance = EntitySetDictionary.GetEntitySet(resource.GetType()); foreach (object entity in entitySetInstance) { // check if there is not another instance with the same id if (EqualKeys(resource, entity)) { throw new DataServiceException(500, "An entity with the given key already exists"); } } entitySetInstance.Add(resource); }
} // SetReference public virtual void SaveChanges() { foreach (KeyValuePair <object, EntityState> pendingChange in this.PendingChanges) { switch (pendingChange.Value) { case EntityState.Added: AddResource(pendingChange.Key); break; case EntityState.Deleted: // find the entity set for the object IList entitySetInstance = EntitySetDictionary.GetEntitySet(pendingChange.Key.GetType()); DeleteEntity(entitySetInstance, pendingChange.Key, true /*throwIfNotPresent*/); break; default: throw new Exception("Unsupported State"); } } this.PendingChanges.Clear(); } // SaveChanges