PDA

View Full Version : اشکال در تغییراطلاعات در دیتابیس با linq



EBRAHIMIEKOKDARAGHI
جمعه 24 شهریور 1391, 20:49 عصر
سلام بر اساتید محترم
در جدول Owner فیلد Number_of_national کلید اصلی است واز نوع strinng میباشد وقتی در این جدول اطلاعات سایر فیلد هارا تغییر میدهیم مشکلی بوجود نمی آید ولی وقتی مقدار کلید اصلی را تغییر میدهیم error میدهدضمنا"مقدار مورد نظر null یا تکراری نیست
dt = new dataServicesDataContext();
var data = (from item in dt.Owners
where item.id==int.Parse(dataGridView1.CurrentRow.Cells[0].Value.ToString().Trim())
select item).Single();
data.Address = txtAddress.Text.Trim();
data.Datebirth = datebirth.SelectedDateInStringPersian.Trim();
data.ID_Number = txtIDNumber.Text.Trim();
data.Last_name = txtLastname.Text.Trim();
data.Middle_name = txtMiddlename.Text.Trim();
data.Name = txtName.Text.Trim();
data.Number_of_national = txtNumbernational.Text.Trim();
data.Place_of_Issue = txtPlaceIssue.Text.Trim();
data.Zip_code = txtZipcode.Text.Trim();
dt.SubmitChanges();

EBRAHIMIEKOKDARAGHI
جمعه 24 شهریور 1391, 22:30 عصر
منتظر حواب اساتید هستم خیلی ضروریه!!!!!!!!!!!!

Mahmoud Zaad
شنبه 25 شهریور 1391, 09:27 صبح
سلام
چه خطایی میده؟ متن یا عکسشو بزارید.
برای چی می خواید مقدار کلید اصلی رو تغییر بدید؟ تا جایی که می دونم یکی از دلایلی که کلید اصلی تعریف می شه اینه که یکتا (unique) باشه و معرف اون رکورد خاص، مثل کد ملی برای ایرانی ها، آیا کسی کد ملی رو تغییر میده؟

Hajivandian
شنبه 25 شهریور 1391, 09:33 صبح
سلام، همونطور که دوستمون هم اشاره کردن لزومی نداره مقدار کلید اصلی رو تغییر بدید.
اصلا تغییر مقدار کلید اصلی در پایگاه داده معنا نداره! و تو Entity Framwork هم به شما اجازه تغییر نمیده. مگر به حقه و کلک بخواین متوصل بشین که این هم میتونه ناشی از تحلیل اشتباه پایگاه داده باشه.

EBRAHIMIEKOKDARAGHI
شنبه 25 شهریور 1391, 12:06 عصر
باتشكر از پاسخ شما
آيا اگر اپراتور مقداري كليد اصلي رو را اشتباه وارد كرد حتما" بايد ركورد رو حذف كنه؟
من فكر ميكنم زياد منطقي نيست.

Hajivandian
شنبه 25 شهریور 1391, 13:28 عصر
آيا اگر اپراتور مقداري كليد اصلي رو را اشتباه وارد كرد حتما" بايد ركورد رو حذف كنه؟
من فكر ميكنم زياد منطقي نيست.

آره، راهش اینه که رکورد حذف بشه، و دوباره با اطلاعات جدید ثبت بشه. فکر نمیکنم حذف رکورد از تغییر مقدار کلید اصلی غیر منطقی تر باشه!

اصلاح:
با یکی از دوستامم این موضوع رو مطرح کردم اون پیشنهاد داد اصلا کلید اصلیت رو بیا یه مقدار افزایشی (IDENTITY FIELD) بگیر و برای اون فیلدت هم تو کد چک کن که مقدار تکراری وارد نکنن. اینطوری در صورتی که بعدا بخوای اون رو آپدیت کنی مشکلی پیش نمیاد.