/// <summary>
        /// Connects to the database and sets up the loaded items from the collection or vice versa.
        /// </summary>
        public void ConnectToDatabase()
        {
            ReadFromDatabase = false;
            Client           = GetMongoClient();
            ItemsDatabase    = Client.GetDatabase(DatabaseName);
            IMongoCollection <T> itemsRead = ItemsDatabase.GetCollection <T>(CollectionName);

            long totalCount = itemsRead.Count(Filter);

            if (totalCount == 0 && LoadedItems.Count != 0)
            {
                AddLoadedItemsToBlankDatabase(itemsRead);
            }
            else if (LoadedItems.Count != 0 && LoadedItems.Count > totalCount)
            {
                AddNewItemsToExistingDatabase(itemsRead);
            }
            else if (totalCount != 0 && LoadedItems.Count <= totalCount)
            {
                LoadAllItemsFromDatabase(itemsRead);
                ReadFromDatabase = true;
            }
            else if (totalCount != 0 && totalCount < LoadedItems.Count)
            {
                UpdateDatabaseItems(itemsRead);
                ReadFromDatabase = true;
            }
        }
        /// <summary>
        /// Adds a new item to the database.
        /// </summary>
        /// <param name="newItem">The item to add.</param>
        public void AddNewItemToDatabase(T newItem)
        {
            Client = GetMongoClient();

            ItemsDatabase = Client.GetDatabase(DatabaseName);

            IMongoCollection <T> itemsRead = ItemsDatabase.GetCollection <T>(CollectionName);

            itemsRead.InsertOne(newItem);
        }
        /// <summary>
        /// Updates an existing item in the database.
        /// </summary>
        /// <param name="existingItem">The item to update.</param>
        public void UpdateDatabaseItem(T existingItem)
        {
            Client = GetMongoClient();

            ItemsDatabase = Client.GetDatabase(DatabaseName);

            IMongoCollection <T> itemsRead = ItemsDatabase.GetCollection <T>(CollectionName);

            FilterDefinition <T> filterOnId = Builders <T> .Filter.Eq(s => s.Id, existingItem.Id);

            long totalCount = itemsRead.Count(filterOnId);

            ReplaceOneResult result = itemsRead.ReplaceOne(filterOnId, existingItem);
        }
        /// <summary>
        /// Updates an existing item in the database.
        /// </summary>
        /// <param name="existingItem">The item to update.</param>
        public void UpdateDatabaseItem(T existingItem)
        {
            Client = new MongoClient(DatabaseConnectionString);

            ItemsDatabase = Client.GetDatabase(DatabaseName);

            IMongoCollection <T> itemsRead = ItemsDatabase.GetCollection <T>(CollectionName);

            var filterOnId = Builders <T> .Filter.Eq(s => s.Id, existingItem.Id);

            long totalCount = itemsRead.Count(filterOnId);

            var result = itemsRead.ReplaceOne(filterOnId, existingItem);
        }
Esempio n. 5
0
        /// <summary>
        /// Removes an item from the database.
        /// </summary>
        /// <param name="deleteItem">The item to remove.</param>
        public bool RemoveItemFromDatabase(T deleteItem)
        {
            bool removed = false;

            Client = new MongoClient(DatabaseConnectionString);

            ItemsDatabase = Client.GetDatabase(DatabaseName);

            IMongoCollection <T> itemsRead = ItemsDatabase.GetCollection <T>(CollectionName);

            LoadAllItemsFromDatabase(itemsRead);
            T foundItem = LoadedItems.Where(x => x.EquivalenceName == deleteItem.EquivalenceName).Select(x => x).FirstOrDefault();

            if (foundItem != null)
            {
                itemsRead.DeleteOne(a => a.Id == foundItem.Id);

                removed = CheckRemoved(removed);
            }

            return(removed);
        }