PDA

View Full Version : Sample پرو‍‍ژه واقعي از LINQ



shayesteh_bh
یک شنبه 24 شهریور 1387, 10:44 صبح
با سلام خدمت دوستان
من بايد در پروژه جديدمون لايه Business Layer رو در بيارم . دستورات linq قراره در اين لايه قرار بگيره. كسي از دوستان كدي از پروژه واقعي استفاده از linq داره كه برام بذاره من ازش ايده بگيرم.
:گریه:
با تشكر

sinpin
یک شنبه 24 شهریور 1387, 12:19 عصر
ترجيحا از حالت دولايه استفاده كنيد:

1- آيتم جديدي از نوع Linq to SQL classes (مثلا با نام MyDataContext) به لايه BLL اضافه كنيد.
2- ديتابيس را به آن معرفي و بايند كنيد
3- جداول بانك اطلاعاتي بصورت Entity هايي در آيتم MyDataContext قرارميگيرند كه اگر نياز به تغييراتي بود بوسيله ايجاد partial class هايي از آنها تغييرات را اعمال كنيد
4- در همان لايه BLL كلاسهايي بسازيد مثلا با نام : BLLCompanyType جهت تراكنش با entity ها (جداول ديتابيس)
مانند :

public class BLLCompanyType
{
static MyDataContext dc = new MyDataContext ();

public static List<CompanyType> SelectAll()
{
return (from ent in dc.CompanyTypes
orderby ent.Description
select ent).ToList<CompanyType>();
}

public static int Insert(CompanyType ent)
{
try
{
dc.CompanyTypes.InsertOnSubmit(ent);
dc.SubmitChanges();
}
catch
{
return -1;
}
return ent.Id;
}
...

5- لايه BLL را در ارجاعات PL اضافه كنيد.
6- حال ميتوانيد در لايه PL متودهاي اين كلاس را فراخواني كنيد.

shayesteh_bh
دوشنبه 25 شهریور 1387, 10:23 صبح
6- حال ميتوانيد در لايه PL متودهاي اين كلاس را فراخواني كنيد.

ممنون از توضيحتون اما ميشه توضيح بديد چطوري پارامترها رو از لايه PL يا UI بفرستم براي يكي از متدها مثلا Insert در لايه BLL؟ آيا به DataSet يا Object ديگري نياز است؟ همچنين چطوري جواب Query رو از لايه BLL برگردونم به لايه PL ؟

sinpin
دوشنبه 25 شهریور 1387, 10:47 صبح
ممنون از توضيحتون اما ميشه توضيح بديد چطوري پارامترها رو از لايه PL يا UI بفرستم براي يكي از متدها مثلا Insert در لايه BLL؟ آيا به DataSet يا Object ديگري نياز است؟
از business object هاي ساخته شده استفاده ميكنيد. براي مثال در متود زير من آبجكتي از نوع Answer را به متود مربوطه پاس ميكنم :

BLLAnswer.Add(
new Answer
{
QuestionId = GetCurrentQuestionId(),
Body = tbAnswer.Text,
CreatedDate = DateTime.Now
});
همچنين چطوري جواب Query رو از لايه BLL برگردونم به لايه PL ؟
ميتونيد يك ژنريك ليست برگردونيد :

public static List<Question> SelectAll()
{
return dc.Questions.ToList<Question>();
} و در لايه UI به شكل زير يك كامبوباكس رو پرميكنيد :

lbQuestions.ItemsSource = BLLQuestion.SelectAll();