|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RepositoryProjectSample.Interfaces;
using System.Data.Common;
using System.Data.Objects;
using System.Data;
using System.Data.Objects.DataClasses;
namespace RepositoryProjectSample.Implementations
{
public class UnitOfWork<C> : IUnitOfWork where C : ObjectContext
{
private DbTransaction _transaction;
private Dictionary<Type, object> _repositories;
private C _ctx;
public UnitOfWork()
{
_ctx = Activator.CreateInstance<C>();
_repositories = new Dictionary<Type, object>();
}
public IRepository<TSet> GetRepository<TSet>() where TSet : class
{
if (_repositories.Keys.Contains(typeof(TSet)))
return _repositories[typeof(TSet)] as IRepository<TSet>;
var repository = new Repository<TSet, C>(_ctx);
_repositories.Add(typeof(TSet), repository);
return repository;
}
/// <summary>
/// Start Transaction
/// </summary>
/// <returns></returns>
public DbTransaction BeginTransaction()
{
if (null == _transaction)
{
if (_ctx.Connection.State != ConnectionState.Open)
{
_ctx.Connection.Open();
}
this._transaction = _ctx.Connection.BeginTransaction();
}
return _transaction;
}
public int Save()
{
return _ctx.SaveChanges();
}
#region IDisposable Members
public void Dispose()
{
if (null != _transaction)
{
_transaction.Dispose();
}
if (null != _ctx)
{
_ctx.Dispose();
}
}
#endregion
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
In my childhood, my uncle has shown me how to see the cloud in a close look and I understand that one can draw some elements of the Earth in the sky-canvas if he/she wants to. After that the cloud becomes closer to me and It teaches me one thing that, a deeper-look to something will give you some clues to draw your imagination. You can able to see that one which you have build-up in your mind.
Years past, I have started my career as a software engineer and has been looking for passion in my coding and development which I should be to enjoy my profession and has started asking myself- 'am I doing any engineering here?!' Is my code becoming that thing which I have designed in my mind? So to find that answer I have tried that old solution here... I have decided to come closer to my code and start analyzing them. And it is really working for me and at least it gives me the confidence that I can build something that I really want to. I can draw my thinking there through my code and can build-up my vision that I have designed in my mind. It also helps me to think out of the box, solve each problems by making blocks and make me careful on each steps.
• Morshed's Technical Blog site: http://morshedanwar.wordpress.com/
• Morshed's Technical articles those are published in Codeproject site: http://www.codeproject.com/script/Articles/MemberArticles.aspx?amid=2992452
• Morshed's Linkedin profile: http://www.linkedin.com/in/morshedanwar
• Morshed's Facebook Profile : http://www.facebook.com/morshed.pulok
Beside all these I like to do - photography and music. Here is my Flickr photos : http://www.flickr.com/photos/morshed_anwar/