是的,这已经是一个问题了,可能很接近。但是我想要一个准确的答案。
我已经使用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";
这是我将其转换为3层体系结构时的代码:
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;
}
}
答案 0 :(得分:1)
对我来说,整体转换看起来不错,并带有几个建议(IMHO):
Shift_Timing
)通常可以实现
通过其中的服务适配器可以完成BO的转换
UI模型,反之亦然。interface
访问它。这将使您的设计
可扩展的。