Using .net 3.5, implementation of the repository pattern along with enterprise library 5 and stored procedures. Did not use EF, stored procedures already available and VS2008 is limited to EF 3/4.
Looking at the following code, what are your recommendations for each section:
Domain/Repositories/IRepository.cs
public interface IRepository<T>
{
IEnumerable<T> Get();
T Get(int Id);
void Save(T model);
void Delete(int Id);
}
Domain/Repositories/RequestRepository.cs
(Similar code repeated for ResponseRepository, ApprovalRepository, etc...)
public class RequestRepository : IRepository<Request>
{
public IEnumerable<Request> Get()
{
return DataAcessWrapper.GetRequests();
}
public Request Get(int Id)
{
return DataAcessWrapper.GetRequest(Id);
}
public void Save(Request model)
{
DataAcessWrapper.SaveRequest(model);
}
public void Delete(int Id)
{
DataAcessWrapper.DeleteRequest(Id);
}
}
Domain/DataAccess/DataAccessWrapper.cs
public static class DataAcessWrapper
{
public static string _connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
public static IEnumerable<Request> GetRequests(){
SqlDatabase db = new SqlDatabase(_connectionString);
var requests = db.ExecuteSprocAccessor<Request>("ResponseTracking_Get_Requests");
return requests;
}
public static Request GetRequest(int requestId)
{
SqlDatabase db = new SqlDatabase(_connectionString);
var request = db.ExecuteSprocAccessor<Request>("ResponseTracking_Get_Requests", requestId).ToList().FirstOrDefault();
return request;
}
public static void SaveRequest(Request request)
{
SqlDatabase db = new SqlDatabase(_connectionString);
DbCommand dbc = db.GetStoredProcCommand("ResponseTracking_Put_Request");
db.AddInParameter(dbc, "@RequestID", DbType.Int32, request.RequestID);
db.AddInParameter(dbc, "@Category", DbType.String, request.Category);
db.AddInParameter(dbc, "@Title", DbType.String, request.Title);
db.AddInParameter(dbc, "@DateReceived", DbType.DateTime2, request.DateReceived);
db.AddInParameter(dbc, "@Source", DbType.String, request.Source);
db.AddInParameter(dbc, "@ResponseRequired", DbType.String, request.ResponseRequired);
db.AddInParameter(dbc, "@ResponseDateDue", DbType.DateTime2, request.ResponseDateDue);
db.AddInParameter(dbc, "@ApprovalLevelRequired", DbType.String, request.ApprovalLevelRequired);
db.AddInParameter(dbc, "@FollowUpDate", DbType.DateTime2, request.FollowUpDate);
db.AddInParameter(dbc, "@Request", DbType.String, request.RequestDescription);
db.AddInParameter(dbc, "@Status", DbType.String, request.Status);
db.AddInParameter(dbc, "@Notes", DbType.String, request.Status);
db.AddInParameter(dbc, "@ClosedDate", DbType.DateTime2, request.ClosedDate);
db.AddInParameter(dbc, "@EmployeeID", DbType.String, request.EmployeeID);
db.AddInParameter(dbc, "@CreationDateTime", DbType.DateTime2, request.CreationDateTime);
db.ExecuteNonQuery(dbc);
}
public static void DeleteRequest(int requestId)
{
SqlDatabase db = new SqlDatabase(_connectionString);
DbCommand dbc = db.GetStoredProcCommand("ResponseTracking_Delete_Request", requestId);
db.ExecuteNonQuery(dbc);
}
}
Domain/Models/Request.cs
public class Request
{
public int RequestID { get; set; }
public string Category { get; set; }
public string Title { get; set; }
public DateTime DateReceived { get; set;}
public string Source { get; set;}
public string ResponseRequired{ get; set;}
public DateTime ResponseDateDue { get; set;}
public string ApprovalLevelRequired { get; set;}
public DateTime FollowUpDate {get; set;}
public string RequestDescription {get; set;}
public string Status {get; set;}
public string Notes { get; set; }
public DateTime ClosedDate {get; set;}
public string EmployeeID {get; set;}
public DateTime CreationDateTime {get; set;}
}