PDA

View Full Version : ایجاد متد در لایه دوم و استفاده از اون در لایه سوم برای دریافت اطلاعات از دیتابیس



Abbas Naghdi
پنج شنبه 12 دی 1392, 19:33 عصر
با سلام آیا کسی کد ارسال فقط 1 فیلد از یک Table رو از داخل یک کلاسس به فرم رو داره ؟

یه کلاس دارم که قراره یه Table رو با استفاده از کد زیر فیلتر کنم ...

foreach (var q in dc.tbl)
{
q.Name;
}

حالا این رو چطور Return کنم ؟

hmbarnamenevis
پنج شنبه 12 دی 1392, 19:51 عصر
با سلام به دوست گرامی برنامه نویس. اول می خواستم بدونم شما ادبیات فارسی رو با چند پاس کردی!! چون واقعا جمله بندی های شما به هم نمی خوره. غلط املایی هم که دارید.
خروجی فیلتر شما چیه؟

hmbarnamenevis
پنج شنبه 12 دی 1392, 20:00 عصر
اگر منظورت رو درست فهمیده باشم:
datatable dt=gettable("select name from table1");
return dt

khokhan
پنج شنبه 12 دی 1392, 20:14 عصر
با سلام آیا کسی کد ارسال فقط 1 فیلد از یک Table رو از داخل یک کلاسس به فرم رو داره ؟

یه کلاس دارم که قراره یه Table رو با استفاده از کد زیر فیلتر کنم ...

foreach (var q in dc.tbl)
{
q.Name;
}

حالا این رو چطور Return کنم ؟
..................
لینک (http://msdn.microsoft.com/en-us/data/jj819164.aspx)
و
لینک (http://www.codeproject.com/Articles/43367/ADO-NET-Entity-Framework-as-Data-Access-Layer) (http://msdn.microsoft.com/en-us/data/jj819164.aspx) (http://msdn.microsoft.com/en-us/data/jj819164.aspx)

لینک (http://www.asp.net/mvc/tutorials/older-versions/models-%28data%29/creating-model-classes-with-the-entity-framework-cs)
(http://msdn.microsoft.com/en-us/data/jj819164.aspx)

Mahmoud.Afrad
پنج شنبه 12 دی 1392, 20:16 عصر
linq کار میکنی؟ برای راهنمایی کد کامل تری نیاز هست.

Abbas Naghdi
جمعه 13 دی 1392, 00:21 صبح
با سپاس از همه

ببخشید من تایپم سریع هست و آدت ندارم روی جملاتم فکر کنم و غلط هامو تصحیح کنم ... هرچی به ذهنم میاد مینویسم ...

من دارم یک برنامه ی سه لایه رو مینویسم که هر سه لایه دست خودم هست
حالا من میخوام از لایه ی Data که لایه ی کد من هست به لایه ی Model که لایه ی دیتابیس من هست (Entity Framework) متصل بشم و از جدول User اطلاعات فیلد Name رو بگیرم و به لایه ی Data پاس بدم ...
تا اینجاشو خودم انجام دادم ... حالا من میخوام اطلاعات لایه ی Data رو به لایه ی UI پاس بدم و در داخل یک ComboBox نمایش بدم ...
من این کار رو کردم اما مشکل اینجاست که فقط یک مقدار از فیلد Name رو میفرسته .. مثلا به جای اینکه (((Rza , Ali , Abbas))) رو بفرسته فقط Abbas رو میفرسته ...
این در حالیه که کد زیر در برنامه های 1 لایه خوب کار میکنه اما در برنامه های چند لایه نه

اینم کد من :

object c;
public object Customer()
{
foreach(var q in dc.TblUser)
{
c = q.w_name;
}
return c;
}

Mahmoud.Afrad
جمعه 13 دی 1392, 00:40 صبح
باید بدونی که به محض اجرای return بازگشت اتفاق میفته و دیگه حلقه ادامه پیدا نمیکنه.



کد لایه دوم رو به اینصورت بنویس:

public IEnumerable<TblUser> AllCustomers()
{
return dc.TblUser;
}

در لایه UI هم به اینصورت استفاده میکنی:

comboBox1.DataSource = bl.AllCustomers();
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "Id";

bl شئ ای هست که از لایه دوم ساخته شده.
name , id نام و کلیداصلی هستند.

Abbas Naghdi
شنبه 14 دی 1392, 15:41 عصر
با تشکر حل شد اما نمیشه با استفاده از همون Foreach باشه ؟

میخوام اطلاعات رو به صورت item در combobox ذخیره کنم نه به صورت datasource

Mahmoud.Afrad
پنج شنبه 19 دی 1392, 21:43 عصر
public List<string> AllCustomers()
{
return dc.TblUser.Select(i => i.name).ToList();
}

به اینصورت استفاده کن:

List<string> names = bl.AllCustomers();
foreach (string str in names)
{
comboBox1.Items.Add(str);
}