PDA

View Full Version : سوال: با استفاده از linq to sql نمیخواهم نام خانوادگی یکسان اضافه شود



ندااحمدی
یک شنبه 14 فروردین 1390, 14:01 عصر
برنامه تحت ویندوزم را با استفاده ازlinq to sql نوشتم حال چه کدهایی باید بنویسم
تا برنامه نتواند نام خانوادگی تکراری add کند؟

Rejnev
یک شنبه 14 فروردین 1390, 14:17 عصر
سلام
هنوز به جواب نرسیدید؟
به هر حال:
اولا بهتره این کار رو با ایجاد check constraint در Sql انجام بدید. بدین نحو که فیلد LastName رو باید دارای خاصیت Unique کنید.
اما اگه میخواید که در لایه برنامه هم این محدودیت اعمال بشه:
هنگام درج شخص جدید (فرض رو بر این میگیرم که موجودیت اشخاص(جدول اشخاص) با نام Person توسط linq to sql (یا همون Entity framework) ایجاد شدن) این قطعه کد کمکتون میکنه:

DataContext1 db=new DataContext();
Persons NewPerson=new Persons(){
FirstName="ali',
LastName="rezvani",
ID=1001 //,...
}
if(db.Persons.Count(a=>a.LastName.Equals(NewPerson.LastName))==0)
{
db.Persons.InsertOnSubmit(NewPerson);
db.SubmitChanges();
}

ندااحمدی
یک شنبه 14 فروردین 1390, 15:34 عصر
چطور باید فیلد LastName رو دارای خاصیت Unique کنم؟
ممنون میشم راهنمایی کنید

smgraphic
یک شنبه 14 فروردین 1390, 16:01 عصر
DataContext1 db=new DataContext();
Persons NewPerson=new Persons(){
FirstName="ali',
LastName="rezvani",
ID=1001 //,...
}
if(db.Persons.Count(a=>a.LastName.Equals(NewPerson .LastName))==0)
{
db.Persons.InsertOnSubmit(NewPerson);
db.SubmitChanges();
}

Rejnev
یک شنبه 14 فروردین 1390, 16:08 عصر
در sql2000:
68221
در sql2008:
68222
*توجه داشته باشید که اگه فیلدتون unique باشه، قبل از درج در جدول، باید خودتون (داخل کدهای سی شارپ شبیه چیزی که من نوشتم) چک کنید که دیتای تکراری واردش نکنید، وگرنه این constraint (یا همون قید یونیک(بی همتا) بودن) کار خودش رو انجام میده برنامه با خطا متوقف میشه و...

ندااحمدی
یک شنبه 14 فروردین 1390, 22:00 عصر
میشه با sql2008 توضیح دهید؟
در مورد کدهایی که توضیح دادید
باید این کدها را در کلاسی که عمل add,delete,edite و غیره با linqنوشتم اضافه کنم و یا در فرم ای که عمل ثبت انجام میشود

Rejnev
دوشنبه 15 فروردین 1390, 11:43 صبح
عکس دوم sql2008.
توی دیزاین جدولتون که رفتید، به ترتیب شماره های نشون داده شده رو انجام بدید.