PDA

View Full Version : حرفه ای: پیاده سازی ارتباط Many to One



mvardin
جمعه 29 شهریور 1392, 15:24 عصر
سلام دوستان
این قطعه کد رو نگاه کنید:

using (DataContext db = new DataContext(DBHelper.GetConnectionString()))
{
var result = from item in db.GetTable<Table1>()

select new { item};

foreach (var obj in result)
{
Table1 retVal = new Table1();
retVal = obj.item;

List<Table2> tbl2List = new Table2Data().SelectTable2(retVal.Table2ID);
foreach (Table2 tbl in tbl2List)
{
retVal.Table2 += tbl;
}
retValList.Add(retVal);

{ }



حالا، راهی هست که دیگه من Connection نزنم و توی همون Context که باز شده Table2 رو هم داشته باشم!

mvardin
شنبه 30 شهریور 1392, 07:19 صبح
خب مثل اینکه دوستان کد بنده رو متوجه نشدن یا من بد توضیح دادم
سوال اول: به دلیل معماری خاص نرم افزار از حالات

db.GetTable<Table1>()

برای گرفتن جدول استفاده میشه ...
راه بهتری میشناسید!

سوال دوم: توی این کد، یک آبجکت هست که باید توسط یک لیست که در یک جدول دیگر با کلید خارجی بهش متصل شده پرشود، البته لیست هست ...
توی این کد اومده توی یه حلقه هی کانکشن باز می کنه و لیست یا آبجکت رو می خونه و توی فیلد قرار میده ...
بنظرتون راه حل بهتری وجود داره!

ممنون میشم اگه نظرتون رو بگید

parvizwpf
پنج شنبه 04 مهر 1392, 11:28 صبح
using(dataContext dc=new DataContext())
{
var t1=dc.Table1;
foreach(var t2 in t1)
{
t1.t2Field=......;
}
}

اینجوری اگه ارتباط داشته باشند میتونید توی فور ایچ دسترسی به اون فیلد متصل جدول دو رو داشته باشید.

mvardin
جمعه 05 مهر 1392, 08:58 صبح
دستت درد نکنه عزیزم، ولی توی پست دو گفتم به دلیل معماری خاصی که داریم، به ناچار باید GetTable بزنیم یعنی نمی تونیم از EF یا LTS استفاده کنیم ...
دسترسی به فیلد جدول دوم که شما فرمودید تنها زمانی رخ میده که با دو راهی که بالا عرض کردم پیاده سازی بشه ...
کلا روش های Many-To-One چیه؟
برای پیاده سازی!

ali_autumnal
شنبه 06 مهر 1392, 22:12 عصر
سلام دوستان
این قطعه کد رو نگاه کنید:

using (DataContext db = new DataContext(DBHelper.GetConnectionString()))
{
var result = from item in db.GetTable<Table1>()

select new { item};

foreach (var obj in result)
{
Table1 retVal = new Table1();
retVal = obj.item;

List<Table2> tbl2List = new Table2Data().SelectTable2(retVal.Table2ID);
foreach (Table2 tbl in tbl2List)
{
retVal.Table2 += tbl;
}
retValList.Add(retVal);

{ }



حالا، راهی هست که دیگه من Connection نزنم و توی همون Context که باز شده Table2 رو هم داشته باشم!

سوال کلا نا مفهوم است. از طرفی این نوع کد نویسی اصلا بهینه نیست.
مدل رو قرار بدید، اون چیزی هم که می خواهید رو هم واضح بگید . با قرار دادن قطعه ای از کد و در خواست پاسخ بجایی نخواهید رسید.
موفق باشید

mvardin
یک شنبه 07 مهر 1392, 10:17 صبح
سلام
بله حق با شماست، بنده خیلی سعی کردم تا واضح بیان کنم ولی موفق نشدم ...
1- برای ارتباط های Many-To-Many چه Patternهایی هست؟
2- توی معماری این نرم افزار، بجای استفاده از EF یا سایر ORMها اومده از دستور .GetTable استفاده کرده که این دستور میاد و یه کلاس رو با کانتکس داده شده مپ میکنه و خود شیء رو میده، برای همین اومده توی یه لوپ دونه دونه سایر آبجکهای سایر جدول ها رو انتخاب می کنه و به این assign می کنه ...

مورد دوم رو هم نمی تونم بهتر توضیح بدم، اگه متوجه شدید که خدارو شکر، می تونید کمکم کنید، اگم نشدید که همون مورد اول رو اشاره کنید ممنون میشم ...

تشکر