rezataslimi_edu
پنج شنبه 12 اردیبهشت 1398, 18: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 دو رکورد تکراری ثبت میشه . من میخواستم بدونم چه کاری میشه کرد که از ثبت تکراری رکورد مشابه جلو گیری کرد .
امیدوارم واضح توضیح داده باشم و اگر واضح نبوده بگید تا بهتر توضیح بدم.
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 دو رکورد تکراری ثبت میشه . من میخواستم بدونم چه کاری میشه کرد که از ثبت تکراری رکورد مشابه جلو گیری کرد .
امیدوارم واضح توضیح داده باشم و اگر واضح نبوده بگید تا بهتر توضیح بدم.