I am wondering if in particular the function called AssignDBStatusMessage
and TryDataBaseAction
are unnecessary. It seems to me that the logic is more cluttered if i do away with those functions. Please provide me with your ideas and thoughts.
If you have other thoughts please let me know.
man is an entity class generated by entity framework. TestDataBaseEntities is the DBcontext item.
public class DataAccess
{
// ============================
// CRUD FUNCTIONS for MAN TABLE
// ============================
public bool CreateMan(TestDatabaseEntities dbEntities, out string StatusMessage, Man M)
{
string ErrorMessage;
bool bSuccessful;
bSuccessful = TryDataBaseAction(dbEntities, out ErrorMessage,
() =>
{
dbEntities.Men.Add(new Man { ManID = M.ManID, Name = M.Name });
});
StatusMessage = AssignDBStatusMessage("Records created successfully", ErrorMessage, bSuccessful);
return bSuccessful;
}
public bool UpdateMan(TestDatabaseEntities dbEntities, IQueryable<Man> query, out string StatusMessage, Man man)
{
string ErrorMessage;
bool bSuccessful;
bSuccessful = TryDataBaseAction(dbEntities, out ErrorMessage,
() =>
{
foreach (Man M in query)
{
M.Name = man.Name;
}
});
StatusMessage = AssignDBStatusMessage("Records updated successfully", ErrorMessage, bSuccessful);
return bSuccessful;
}
public bool DeleteMan(TestDatabaseEntities dbEntities, IQueryable myQuery, out string StatusMessage)
{
string ErrorMessage;
bool bSuccessful;
bSuccessful = TryDataBaseAction(dbEntities, out ErrorMessage,
() =>
{
foreach (Man M in myQuery)
{
dbEntities.Men.Remove(M);
}
});
StatusMessage = AssignDBStatusMessage("Records deleted successfully", ErrorMessage, bSuccessful);
return bSuccessful;
}
public bool ReadMan(TestDatabaseEntities dbEntities, IQueryable myQuery, out string StatusMessage, out string[,] Records)
{
string ErrorMessage;
bool bSuccessful;
string[,] TheseRecords = null;
// hands an Action() to TryDataBase, as indicated by lambda expression in 3rd arguement.
bSuccessful = TryDataBaseAction(dbEntities, out ErrorMessage,
() =>
{
List<Man> men = myQuery.OfType<Man>().ToList();
TheseRecords = new string[men.Count, 2];
for (int i = 0; i < men.Count; i++)
{
TheseRecords[i, 0] = men[i].ManID.ToString();
TheseRecords[i, 1] = men[i].Name;
}
});
Records = TheseRecords;
StatusMessage = AssignDBStatusMessage("Records read successfully", ErrorMessage, bSuccessful);
return bSuccessful;
}
// ============================
// SAVECHANGES FUNCTION
// ============================
public bool SaveChanges(TestDatabaseEntities dbEntities, out string StatusMessage)
{
bool bSuccessful;
string ErrorMessage;
bSuccessful = TryDataBaseAction(dbEntities, out ErrorMessage, () => dbEntities.SaveChanges());
StatusMessage = AssignDBStatusMessage("Save changes Sucessful", ErrorMessage, bSuccessful);
return bSuccessful;
}
// ============================
// Helper functions?
// ============================
public bool TryDataBaseAction(TestDatabaseEntities MyDBEntities, out string ErrorMessage, Action MyDBAction)
{
UserInterface MyUI = new UserInterface();
try
{
MyDBAction();
ErrorMessage = "No Errors";
return true;
}
catch (Exception e)
{
ErrorMessage = e.ToString();
return false;
}
}
private string AssignDBStatusMessage(string SuccessMsg, string FailureMsg, bool bSuccessful)
{
if (bSuccessful)
return SuccessMsg;
else
return FailureMsg;
}
}