Да, это уже заданный вопрос, и возможно быть рядом.Но я хочу точных ответов.
Я создал простую систему с использованием C #, я использовал 2-уровневую архитектуру, теперь я хочу перейти на 3-уровневую архитектуру, я прочитал много документации, блогов и вопросов.StackOverflow.Я хочу знать, правильное ли мое преобразование, или, если нет, пожалуйста, дайте мне знать.
Любые идеи окажут большую помощь.
Это мой код в 2-уровневой архитектуре:
dtpfromdate.MaxDate = DateTime.Today;
dtptodate.MaxDate = DateTime.Today;
dtpfromdate.Value = DateTime.Today;
dtptodate.Value = DateTime.Today;
this.Text = FormName;
Db = new DBLayer.DBLayer();
cmbRD.DataSource = Db.getRSetSQL("exec IMC_DCNE..usp_Get_Shift_Timing", DBLayer.DBLayer.SqlType.SqlQuery);
cmbRD.DisplayMember = "Shift_Complete_Details";
cmbRD.ValueMember = "Shift_Name";
Это мой код, когда я преобразую его в трехуровневую архитектуру:
dtpfromdate.MaxDate = DateTime.Today;
dtptodate.MaxDate = DateTime.Today;
dtpfromdate.Value = DateTime.Today;
dtptodate.Value = DateTime.Today;
this.Text = FormName;
Generate_Report_BL obj_Generate_Report = new Generate_Report_BL();
Shift_Timing shift = new Shift_Timing();
List<Shift_Timing> ShiftList = obj_Generate_Report.Get_Shift_Timing("Shift_Name", "Shift_Complete_Details");
cmbRD.DisplayMember = shift.Shift_Name;
cmbRD.ValueMember = shift.Shift_Complete_Details;
Это мой бизнес-уровень:
public class Generate_Report_BL
{
public List<Shift_Timing> Get_Shift_Timing(string strShift_tName, string str_Shift_Complete_Details)
{
List<Shift_Timing> lstUser = new List<Shift_Timing>();
try
{
DataSet ds = Application_Level_Processing_DL.Get_Shift_Timing(strShift_tName,str_Shift_Complete_Details);
if (ds != null && ds.Tables.Contains("Shift_Timing"))
{
lstUser = new Shift_Timing().getShift_Timing(ds.Tables["Shift_Timing"]);
}
}
catch
{
throw;
}
return lstUser;
}
}
Это мой код для уровня данных:
public static DataSet Get_Shift_Timing(string strShift_tName, string str_Shift_Complete_Details)
{
DataSet dsReturn = new DataSet();
Database db = DatabaseFactory.CreateDatabase();
DbCommand command = db.GetStoredProcCommand("usp_Get_Shift_Timing");
db.AddInParameter(command, "@Shift_Name", DbType.String, strShift_tName);
db.AddInParameter(command, "@Shift_Complete_Details", DbType.String, str_Shift_Complete_Details);
db.ExecuteDataSet(command);
if (dsReturn != null && dsReturn.Tables.Count > 0)
{
dsReturn.Tables[0].TableName = "Shift_Timing";
}
return dsReturn;
}
И это класс:
public class Shift_Timing
{
public int Shift_ID { get; set; }
public string Shift_Complete_Details { get; set; }
public string Shift_Name { get; set; }
public string Shift_From { get; set; }
public string Shift_To { get; set; }
public string RD_Code { get; set; }
public string From_Date { get; set; }
public string To_Date { get; set; }
public List<Shift_Timing> getShift_Timing(DataTable dtShiftTime)
{
List<Shift_Timing> lstEntry = new List<Shift_Timing>();
try
{
if (dtShiftTime.Rows.Count > 0)
{
lstEntry = dtShiftTime.AsEnumerable().Select(r => new Shift_Timing
{
Shift_ID = r.Field<int>("Shift_ID"),
Shift_Complete_Details = r.Field<string>("Shift_Complete_Details"),
Shift_Name = r.Field<string>("Shift_Name"),
Shift_From = r.Field<string>("Shift_From"),
Shift_To = r.Field<string>("Shift_To"),
RD_Code = r.Field<string>("RD_Code"),
From_Date = r.Field<string>("From_Date"),
To_Date = r.Field<string>("To_Date"),
}).ToList();
}
}
catch
{
throw;
}
return lstEntry;
}
}