PDA

View Full Version : کد مربوط به ویرایش در صورت وجود دو فیلد غیر تکراری



RIG000
پنج شنبه 17 مهر 1393, 18:29 عصر
سلام.
من میخام ویرایش کنم. دو فیلد من نباید تکراری باشن.
personname و email.

var pname = from checksave in db.Users
where checksave.PersonUserName == user.PersonUserName || checksave.Email == user.Email
select checksave;
if (pname.Count() != 0)
{

return View();
}
else
{
تا اینجا گفتم اگر یکی از این ها تکراری باشه حداقل if اجرا شه و ثبت نشه . و گرنه اگه تو دیتابیس نیباشه else رو اجرا کن.
حالا من گیرم میخام خودمو اپدیت کنم. فقط ایمیلمو میزارم rig@gamil.com یعنی عوضش میکنم. حالا اسمم همون بمونه. اینجوری کوئری من به من گیر میده واسه تغییر دادن.
الان چیکار کنم؟

RIG000
پنج شنبه 17 مهر 1393, 19:08 عصر
<pre>SELECT TOP 1000 [PersonId]
,[PersonUserName]
,[PersonPassword]
,[PersonDate]
,[Email]
,[Mobile]
FROM [dbCodenevis].[dbo].[User]</pre>
من دارم یک جدول با فیلد های بالا .
حالا من قصد اپدیت کردن یک رکورد را دارم.
اما فیلد ایمیل است غیر تکراری .
وقتی من با شماره خودم وارد می شوم و می خواهم ایمیل خود را عوض کنم .
چگونه می توانم چک بکنم که این مقدار از قبل در فیلد دیگری نباشد؟
:(

Mahmoud.Afrad
جمعه 18 مهر 1393, 01:18 صبح
واقعا با این متنی که شما نوشتی باید یه وقتی بزاریم اول سوال شما رو متوجه بشیم بعد روی راه حل فکر کنیم.

اگر منظورت اینه که ایمیل یکتا باشه و در آپدیت چک بشه که قبلا چنین ایمیلی ثبت نشده باشه: کافیه غیر از خودت دیگر userها رو چک کنی تا چنین ایمیلی نداشته باشند

var db = new Database2Entities1();

User user =
(from u in db.User
where u.username == "MyUserName" && u.email == "OldEmail"
select u).SingleOrDefault();
if (user != null)
{
var pname =
from item in db.User
where item.email == "NewEmail" && item.username != "MyUserName"
select item;

if (pname.Any())
{
MessageBox.Show("ای ایمیل قبلا ثبت شده است");
}
else
{
user.email = "NewEmail";
db.SaveChanges();
}
}