// // DbRepository.cs // // Author: // Bryan Allred // // Copyright (c) 2011 Bryan Allred // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. using System.Collections.Generic; using NHibernate; using WhiteNoise.Domain.Abstract; using WhiteNoise.Domain.Entities; namespace WhiteNoise.Domain.Concrete { /// /// Database repository. /// public abstract class DbRepository : IRepository where T : DatabaseEntity { /// /// The NHibernate session. /// private readonly ISession _session; /// /// Initializes a new instance of the class. /// /// /// Session. /// public DbRepository(ISession session) { this._session = session; } #region IRepository[T] implementation /// /// Add the specified member. /// /// /// Member. /// public T Add(T member) { using (ITransaction transaction = this._session.BeginTransaction()) { this._session.Save(member); transaction.Commit(); } return member; } /// /// Find the specified id. /// /// /// Identifier. /// public T Find(int id) { return this._session.Get(id); } /// /// Remove the specified member. /// /// /// Member. /// public T Remove(T member) { using (ITransaction transaction = this._session.BeginTransaction()) { this._session.Delete(member); transaction.Commit(); } return member; } /// /// Update the specified member. /// /// /// Member. /// public T Update(T member) { using (ITransaction transaction = this._session.BeginTransaction()) { this._session.Update(member); transaction.Commit(); } return member; } /// /// Gets the collection. /// /// /// The collection. /// public IList Collection { get { return this._session.QueryOver().List(); } } #endregion } }