PDA

View Full Version : سوال: جلوگیری از ثبت اطلاعات تکراری برای کلاس های تو در تو



rezataslimi_edu
پنج شنبه 12 اردیبهشت 1398, 17:39 عصر
سلام به همگی فرض کنید من یک وب سرویس دارم که داره از کار بر یک کلاس رو میگیره تا اون رو تو دیتابیس ذخیره کنه . این کلاس شامل یک سری کلاس های تو در تو هست مثل مثال زیل :


public class samplePerson
{
public int ID { get; set; }


public string Name { get; set; }


public sampleCopmany PersonCopmany { get; set; }


public sampleLine PersonLine { get; set; }
}


public class sampleCopmany
{
public int ID { get; set; }


public string Name { get; set; }


public sampleLine CopmanyLine { get; set; }
}


public class sampleLine
{
public int ID { get; set; }


public string Name { get; set; }
}




خوب در این کلاس نمونه همونطور که میبینید هم کلاس samplePerson دارای کلاس sampleLine هست و هم کلاس sampleCopmany . اطلاعاتی که کاربر برای من میفرسته ممکنه در هردو sampleLine یک دیتا رو بریزه و یا نه اینکه این دو لاین باهم متفاوت باشند . مثل مثال ذیل :



public class sampleDBContext
{
private MyDBContext dBContext;


public sampleDBContext()
{
dBContext = new MyDBContext();
}
public void Save()
{
samplePerson samplePerson = new samplePerson();


samplePerson.ID = -1;


samplePerson.Name = "Reza";


samplePerson.PersonCopmany = new sampleCopmany()
{
ID = -1,
Name = "Test",
CopmanyLine = new sampleLine()
{
ID = -1,
Name = "line"
}
};


samplePerson.PersonLine = new sampleLine()
{
ID = -1,
Name = "line"
};


dBContext.Add(samplePerson);


dBContext.SaveChangesAsync();
}
}



همونطور که تو مثال بالا میبینید در هر دوسطح کلاس sampleLine اطلاعات یک سانی دارند و در جدول مربوطه توسط EF دو رکورد تکراری ثبت میشه . من میخواستم بدونم چه کاری میشه کرد که از ثبت تکراری رکورد مشابه جلو گیری کرد .

امیدوارم واضح توضیح داده باشم و اگر واضح نبوده بگید تا بهتر توضیح بدم.

ali_md110
جمعه 13 اردیبهشت 1398, 21:54 عصر
آیا منظور شما از این روابط که برقرار کردید رابطه 1 به 1 هست؟
یا چیزی دیگه
چون اگر 1به 1 هم باشد در EF اینگونه روابط بدینصورت تعریف نمیشوند
لطفا دلیل این رابطه را ارسال کنید
در ضمن نحوه ثبت داده در جداول مرتبط بهم در حالات
یک به یک
یک به چند
و یا چند یه چند
متفاوت است

rezataslimi_edu
جمعه 13 اردیبهشت 1398, 22:23 عصر
دوست عزیز ممنون که پاسخ دادید این یک نمونه از یک کلاس هست (البته باتوجه به ملاحظاتی کد اصلی قرار داده نشده ) که توسط یک اپلیکیشن دیگه پر میشه و به یک وب سرویس ارسال میشه و بعد این اطلاعات ارسالی توسط automapper به Entity تبدیل شه و در دیتابیس ذخیره میشه . من در stackoverflow هم سوالم رو مطرح کردم و باتوجه به جوابی که گرفتم این هست که در کلاس های Nested بصورت اتوماتیک خود EF نمیتونه کنترلی رو ثبت تکراری اطلاعات داشته باشه و این کار رو خودم باید بصورت دستی کنترل کنم.

من دنبال این بودم که ببینم ممکنه راهی باشه و من ازش خبر نداشته باشم ، که در آخر متوجه شدم راه اتوماتیکی نیست:گریه: