سلام به همه ...
بریم سراغ در اطلاعات با معماری سه لایه ، قطعا تا الان لایه های DAL و BLL رو ایجاد کردین ، تو پست قبل هم که گفتیم کلاس کانکشن استرینگ توی لایه دیتااکسس (با استفاده از ستینگ) باید ایجاد بشه ؛
و اما بعد ...
لایه دیتااکسس :
using System;
using System.Data.SqlClient;
using System.Data;
namespace RGF_DAL
{
public class Commodity_Dal : Connection_Class
{
public int Commodity(int Commodity_Code, int Group_Id, int Virtual_Warehouse_Id, string Name, string Description, string Image)
{
return ExecuteNoneQuery(CommandType.Text, "Insert Into Tbl_Commodity (Commodity_Code, Group_Id, Virtual_Warehouse_Id, Name, Description, Image) Values (@C, @G, @V, @N, @D, @I)", new SqlParameter[]
{
new SqlParameter("@C", Commodity_Code),
new SqlParameter("@G", Group_Id),
new SqlParameter("@V", Virtual_Warehouse_Id),
new SqlParameter("@N", Name),
new SqlParameter("@D", Description),
new SqlParameter("@I", Image),
});
}
public DataTable Commo_Combo()
{
return ExecuteDataTable(System.Data.CommandType.Text, "Select Id, Name From Tbl_Commodity Order By Id");
}
public SqlDataReader Full_Display()
{
return ExecuteReader(System.Data.CommandType.Text, "Select * From View_Commodity");
}
int Commo_No;
public int Commodity_No()
{
try
{
SqlDataReader DR = ExecuteReader(System.Data.CommandType.Text, "Select Count(*) From Tbl_Commodity");
if (DR.Read())
{
Commo_No = Int32.Parse(DR[0].ToString());
}
return Commo_No;
}
catch
{
return 0;
}
}
}
}
همونطور که مشاهده می کنید من چهار تا کوئری توی کد بالا داریم ، اولی که درج اطلاعات هستش (ویرایش و حذف هم همین ساختاره با این تفاوت که آیدی هم جز پارامتر هاست) ، دومی و سومی که خوندن اطلاعات جدول بانک هست (البته اینجا یکشون از ویو خونده شده) و سومی هم که شمارش یا تعداد اقلام (کالاهای تعریف شده هستش)
فکر کنم کاملا مشخص هستش که کدوم متود از کلاس کانکشن استرینگ رو واسه چه کاری استفاده کردیم (در ادامه از متدای دیگه هم استفاده میکنیم)
در ادامه باید بریم سراغ لایه بیزنس :
using RGF_DAL;
using System;
using System.Collections.Generic;
using System.Data;
namespace RGF_BLL
{
public class Commodity_Bll
{
public int _Commodity_Code { get; set; }
public string _Group { get; set; }
public string _Virtual_Warehouse { get; set; }
public string _Name { get; set; }
public string _Description { get; set; }
public string _Image { get; set; }
public static int Insert_Commodity(int Commodity_Code, int Group_Id, int Virtual_Warehouse_Id, string Name, string Description, string Image)
{
RGF_DAL.Commodity_Dal commodities = new RGF_DAL.Commodity_Dal();
int R_Value = 0;
R_Value = commodities.Commodity(Commodity_Code, Group_Id, Virtual_Warehouse_Id, Name, Description, Image);
return R_Value;
}
public DataTable Commo_No_Combo()
{
return new Commodity_Dal().Commo_Combo();
}
public static List<Commodity_Bll> Full_Show()
{
RGF_DAL.Commodity_Dal commoditytable = new RGF_DAL.Commodity_Dal();
IDataReader dr = commoditytable.Full_Display();
List<Commodity_Bll> commodityList = new List<Commodity_Bll>();
while (dr.Read())
{
Commodity_Bll commo = new Commodity_Bll();
commo._Commodity_Code = Convert.ToInt32(dr["Commodity_Code"]);
commo._Name = dr["Name"].ToString();
commo._Group = dr["Expr1"].ToString();
commo._Virtual_Warehouse = dr["Expr2"].ToString();
commo._Description = dr["Description"].ToString();
commo._Image = dr["Image"].ToString();
commodityList.Add(commo);
}
return commodityList;
}
public int Commo_No()
{
return new Commodity_Dal().Commodity_No();
}
}
}
توی لایه بیزنس یا همون بده بستون ، صرفا در اینجا داده ها رو پاس میده به لایه های دیگه و خودش خاصیت بخصوصی نداره
اما خیلی کارها میشه انجام داد که ساده ترین ش کپسوله سازی داده هاست (که خیلی نحوه پیاده سازی درستش دستم نیومده) و یه نمونه از کار با داده ها توی لایه BLL تو نمایش موجودی کالا میزارم
بعضی جاها خوندم که استفاده از List خیلی بهتر از دیتاتیبل هستش (ولی دلیل ش رو متوجه نشدم - اساتید اگه بعد از اتمام کار راهنمایی کنن ممنون میشم)
واضح که ما داده ها رو از طریق دیتاتیبل تعریف شده در دیتااکسس گرفتیم و بجای اینکه باز با دیتاتیبل پاس بدیم به لایه بالا برای نمایش به کاربر ، داده ها رو توی یک لیست قرار دادیم ... که متغیرهاش از قبل ایجاد شده و مقدار هر فیلد از دیتاتیبل رو توی متغیر مورد نظر ریختیم !