PDA

View Full Version : كمك در مورد فيلد تكراري در linq



mina9188
پنج شنبه 19 مرداد 1391, 13:55 عصر
با عرض سلام و خسته نباشيد خدمت مديران و كاربران عزيز
من يك نرم افزار ميخوام درست كنم كه يك فيلد رو به عنوان كليد اصلي انتخاب كرده ام و وقتي كه يك اسم تكراري وارد مي كنم هنگ مي كنه و خارج ميشه و وقتي كليد اصلي رو برمي دارم به درستي كار ميكنه و مي خواستم چگونه به جاي هنگ كردن و خارج شدن از برنامه يك پيغام ظاهر بشه كه بگه همچنين نامي در قبل به ثبت رسيده است.
و از LINQ استفاده كرده ام
در ضمن نام بانك اطلاعاتي من web هست و نام جدول gh است و فيلد مورد نظر gaddress است لطفا كمكم كنيد
با تشكر
موفق باشيد.

Sirwan Afifi
پنج شنبه 19 مرداد 1391, 14:25 عصر
شما می تونید از try catch استفاده کنید یا اینکه قبل از اینکه متد SaveChanges رو صدا بزنید یه سرچ توی دیتابیس بزنید ببنید همچین فیلدی ثبت شده یا نه؟

aqawae
پنج شنبه 19 مرداد 1391, 15:28 عصر
try
}
.................
db.submitchangs)(;
{
catch(expection ex(
}
messgebox("ex.messge"(;

mina9188
پنج شنبه 19 مرداد 1391, 16:53 عصر
ميشه يه توضيحي در مورد اين كد بالا بدين

uniqueboy_ara
پنج شنبه 19 مرداد 1391, 19:13 عصر
شما بعد از اجرای دستور قبلی و بدست آوردن مقدار IsInDB از کد زیر استفاده کن:
if (!IsInDB)
{
//ثبت رکورد جدید
}
else
MessageBox.Show("این آدرس قبلا ثبت شده");

gwbasic
پنج شنبه 19 مرداد 1391, 22:31 عصر
اینکه تازه کار هستین منطقی هست که سوالتون رو درست مطرح نکنید. امیدوارم با این توضیحات از این به بعد بهتر بتونید صورت سوال رو در یک پست طوری مطرح کنید که قابل فهم باشه و زود به جواب برسید.
کمی بیشتر وقت بذارید و سوال رو بصورت کامل مطرح کنید بگید که از چه تکنولوِژی استفاده می کنید اینجا شما از LINQ استفاده کردید در صورتیکه باید دقیقا بگید LINQ TO SQL‌ یا Entity Framework.‌اگه کدتون ایراد داره حتما اون قطعه کد رو بذارید و بگید چه خطایی می ده و دقیقا متن خطا رو هم بذارید.

در مورد خطا احتمالا خطای Duplicate‌ داده می شه دلیلشم اینکه شاید کلید اصلی رو مقدار دهی نمی کنید و هر دفه با مقدار پیش فرض ذخیره می شه در نتیجه این مقدار تکراری هست. در این حالت دو کار می تونید انجام بدید یا بطور دستی مقدار دهی کنید (که باید دقت کنید تکراری نباشه مثلا از Guid استفاده کنید) یا اینکه این کار رو بر عهده دیتابیس قرار بدین یعنی identity یا ... تعریف کنید

در ضمن سوالتون رو در تالار دسترسی به داده ها مطرح کنید.