با سلام و عرض ادب
من میخام برنامه نویسی 3 لایه رو اصولی یاد بگیرم.به همین منظور اومدم یک جدول توی sql سرور ایجاد کردم و یک جدول ساختم و از طریق یک ویندوز فرم میخام دیتای اون رو بروزرسانی و واکشی کنم . من 2 تا لاس درست کردم یکی بریا دیتالایر و یکی هم برای بیزنس که کدهاش رو در پایین میزارم.من میخام بدونم این روشی که انچام دادم درست هست یا نه؟ کلا توی دیتالایر و بیزنس کلاس من کدهام درست قراردادم یا خیر؟ لایه نمایش یا همون ویو همون فرم های ما هست یا باید برای اون هم کلاس ساخت؟ ممنون میشم منو راهنمایی کنید

کد دیتالایر:
internal class DocumentDAL
{
private SqlConnection conn = new SqlConnection("Server=SQLSERVER.1;Integrated Security=SSPI;Persist Security Info=False;User ID=kiansaze;Initial Catalog=Karjoo;Data Source=DESKTOP-UKJISPV"
internal int DocID;
internal int DocRev;
internal string DocTitle;

public DataTable Select()
{
string sqlcommand = "select * from Document";
SqlDataAdapter da = new SqlDataAdapter(sqlcommand, conn);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}

public int Add()
{
string query = "insert into Document values(@doctitle,@docrev)";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@doctitle", this.DocTitle);
cmd.Parameters.AddWithValue("@docrev", this.DocRev);
int result = cmd.ExecuteNonQuery();
return result;
}
public int Update()
{
string query = "update Document set doctitle = @doctitle,docrev=@docrev where docid = @docid";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.AddWithValue("@docid", this.DocID);
cmd.Parameters.AddWithValue("@doctitle", this.DocTitle);
cmd.Parameters.AddWithValue("@docrev", this.DocRev);
int result = cmd.ExecuteNonQuery();
return result;
}
}


کد بیزنس لایر:
internal class DocumentBLL
{
private DocumentDAL _docDal ;

public int DocID { get; set; }
public int DocRev { get; set; }
public string DocTitle { get; set; }

public DataTable Select()
{
_docDal = new();
return _docDal.Select();
}

public bool Add()
{
_docDal = new();
if (_docDal.Add() > 0)
return true;
else
return false;

}
public bool Update()
{
_docDal = new();
if (_docDal.Update() > 0)
return true;
else
return false;
}
}
فرم وروید کاربر:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btnAdd_Click(object sender, EventArgs e)
{
DocumentBLL documentBLL = new DocumentBLL();
documentBLL.DocTitle = txtDocTitle.Text;
documentBLL.DocRev = int.Parse(txtDocRev.Text);
if (documentBLL.Add())
{
MessageBox.Show("Add Success"
}
}

private void btnEdit_Click(object sender, EventArgs e)
{
DocumentBLL documentBLL = new DocumentBLL();
documentBLL.DocID = int.Parse(dataGridView1.SelectedRows[0].Cells["DocID"].Value.ToString());
documentBLL.DocTitle = txtDocTitle.Text;
documentBLL.DocRev = int.Parse(txtDocRev.Text);
if (documentBLL.Update())
{
MessageBox.Show("Update Success"
}
}

private void btnSelect_Click(object sender, EventArgs e)
{
DocumentBLL documentBLL = new DocumentBLL();
dataGridView1.DataSource = documentBLL.Select();
}
}