سلام دوستان عزیز
نمی دونم بخش اول آموزش چطور بود.
ببخشید که کمتر توضیح دادم، سعی کردم همش با عکس باشه که درکش راحت تر باشه.
آموزش که کامل شد در مورد این نحوه برنامه نویسی باهم گفتگو می کنیم.
در ضمن دارم 2 مدل دیگه از این نوع برنامه نویسی رو آماده می کنم که انشالله در ادامه این سرسی آموزش براتون قرار میدم.
خوب بریم با هم Business Logic Layer رو طراحی کنیم.
دیشب بیشتر راه رو رفتیم و شما هم تمرین کردین و حالا سرحال شروع می کنیم.
قدم پنجم : ساخت Business Logic Layer
1- پروژه رو باز کنید
2- حالا باید یک پروژه جدید به همین Solution اضافه کنیم که اسمش هم میزاریم PersonBLL
لطفا مراحل رو با عکس پیش برین


3- حالا شما لایه Business Logic Layer به Data Access Layer متصل کنید. شما می دانید که هر لایه فقط با لایه بالای و پایینی خود می توانه ارتباط برقرار کنه.
خوب برای این کار مراحل رو همراه با عکس انجام بدین
بروی References کلیک راست می کنیم و از تب Project نام پروژه PersonDAL رو انتخاب می کنیم


4- دوباره بر روی Referencs کلیک راست کرده و از تب .NET گزینه System.Data.Entity رو انتخاب می کنیم

5- حالا یک کلاس درست کنید با نام ContactEO

6- حالا در صفحه کلاس 2 تا NameSpase باید Add کنیم
using System.Collections;
using PersonDAL;
7- حالا شروع می کنیم به کد نویسی در بدنه کلاس
یادم رفت بگم که قبل از شروع حتما
class ContactEO
را به
public class ContactEO
تغییر بدین.
دیدین داشت یادم میرفت بگم. 
حالا تمام مقادیر و موجودیت ها رو تعریف می کنیم.
public int Id { get; set; }
public string Name { get; set; }
public string Family { get; set; }
public string Mobile { get; set; }
public DateTime InsertDate { get; set; }
public DateTime UpdateDate { get; set; }
بعدش یک تابع تعریف می کنیم که نام و نام خانوادگی رو کنار هم قرار بده و بعنوان یک خروجی برای ما بصورت FullName
public string FullName
{
get
{
return Name + ", " + Family;
}
}
حالا برای عملیات ثبت و ویرایش برای مقادیر یک Validation میزاریم که چک کنه مقادیر حتما وارد شده است.
private void ValidateSave(ref ArrayList validationErrors)
{
if (Name.Trim() == "")
{
validationErrors.Add("نام خالی وارد شده");
}
if (Family.Trim() == "")
{
validationErrors.Add("نام خانوادگی خالی وارد شده");
}
if (Mobile.Trim() == "")
{
validationErrors.Add("تلفن همراه خالی وارد شده");
}
}
بعدش نوبت به این میرسه کد عملیات های Insert و Update رو بنویسیم
public bool Save(ref ArrayList validationErrors)
{
ValidateSave(ref validationErrors);
if (validationErrors.Count == 0)
{
if (Id == 0)
{
Id = ContactData.Insert(Name, Family, Mobile, InsertDate);
}
else
{
ContactData.Update(Id, Name, Family, Mobile, UpdateDate);
}
return true;
}
else
{
return false;
}
}
دوستان کدها کاملا ساده نوشته شده بازم هرجاش واستون نا مفهموم هستش بگین کامل توضیح بدم
تا اینجا موفق شدیم هر 2 عملیات رو کنترل و با موفقیت انجام بدیم.
این کد هم برای DELETE استفاده می کنیم
public void Delete()
{
ContactData.Delete(Id);
}
حالا برای اینکه یک رکورد رو برگردانیم و ازش استفاده کنیم از کد زیر استفاده می کنیم
internal void MapData(Contact contact)
{
Id = contact.ID;
Name = contact.Name;
Family = contact.Family;
Mobile = contact.Mobile;
InsertDate = contact.InsertDate.Value;
UpdateDate = contact.UpdateDate.Value;
}
public bool Select(int id)
{
Contact contact = ContactData.SelectById(id);
if (contact != null)
{
MapData(contact);
return true;
}
else
{
return false;
}
}
و در آخر این تابع که کل رکوردها رو در یک شی لیست برمیگرداند
public static List<ContactEO> SelectAll()
{
List<ContactEO> contacts= new List<ContactEO>();
List<Contact> contactDTOs = ContactData.SelectAll();
foreach (Contact contactDTO in contactDTOs)
{
ContactEO ContactEO = new ContactEO();
ContactEO.MapData(contactDTO);
contacts.Add(ContactEO);
}
return contacts;
}
در آخر کلاس مربوطه به شکل زیر میشه
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using PersonDAL;
namespace PersonBLL
{
public class ContactEO
{
public int Id { get; set; }
public string Name { get; set; }
public string Family { get; set; }
public string Mobile { get; set; }
public DateTime InsertDate { get; set; }
public DateTime UpdateDate { get; set; }
public string FullName
{
get
{
return Name + ", " + Family;
}
}
private void ValidateSave(ref ArrayList validationErrors)
{
if (Name.Trim() == "")
{
validationErrors.Add("نام خالی وارد شده");
}
if (Family.Trim() == "")
{
validationErrors.Add("نام خانوادگی خالی وارد شده");
}
if (Mobile.Trim() == "")
{
validationErrors.Add("تلفن همراه خالی وارد شده");
}
}
public bool Save(ref ArrayList validationErrors)
{
ValidateSave(ref validationErrors);
if (validationErrors.Count == 0)
{
if (Id == 0)
{
Id = ContactData.Insert(Name, Family, Mobile, InsertDate);
}
else
{
ContactData.Update(Id, Name, Family, Mobile, UpdateDate);
}
return true;
}
else
{
return false;
}
}
public void Delete()
{
ContactData.Delete(Id);
}
internal void MapData(Contact contact)
{
Id = contact.ID;
Name = contact.Name;
Family = contact.Family;
Mobile = contact.Mobile;
InsertDate = contact.InsertDate.Value;
UpdateDate = contact.UpdateDate.Value;
}
public bool Select(int id)
{
Contact contact = ContactData.SelectById(id);
if (contact != null)
{
MapData(contact);
return true;
}
else
{
return false;
}
}
public static List<ContactEO> SelectAll()
{
List<ContactEO> contacts= new List<ContactEO>();
List<Contact> contactDTOs = ContactData.SelectAll();
foreach (Contact contactDTO in contactDTOs)
{
ContactEO ContactEO = new ContactEO();
ContactEO.MapData(contactDTO);
contacts.Add(ContactEO);
}
return contacts;
}
}
}
و حالا پروژه را Save کنید
این هم از Business Logic Layer.
دیدن تا اینجا کاری نداشت، بزودی هم UI رو باهم می نویسیم.
دوستان اگر توضیح ندادم زیاد بخاطر اینکه تمام مفاهیم ساده هستش. از دوستان هر کس مشکل داشت در کدها سوال کنه جواب گو هستیم.
نظرتون تا اینجا چیه؟ خوب بوده؟!ساده هستش یا سخته؟!
باتشکر از تمامی دوستان
به امید موفقیت ایران و ایرانی
ادامه دارد ...