PDA

View Full Version : مشکل با add در sql توسط entityframework



hadi-pro1988
سه شنبه 31 مرداد 1391, 17:24 عصر
سلام خسته نباشید
من یه بانک با نام school که در اون جدولی با نام student با دو فیلد id و name وجود داره دارم. من با دستور

SchoolEntities bank = new SchoolEntities();
Student ins = new Student();
ins.id = 8;
ins.name = "jafar";
bank.Students.AddObject(ins);

bank.SaveChanges();
dataGridView1.DataSource = bank.Students;


تا اینجا مشکلی نیست و مقدار مورد نظر اد میشه. مشکل موقعی شروع میشه که من مقدار id رو عوض میکنم (مثلا مینویسم ins.id = 9) اونوقت مقدار قبلی که اد شده بود پاک میشه.

کسی میدونه مشکل کجاست؟ ممنون میشم راهنمایی کنید.

gwbasic
سه شنبه 31 مرداد 1391, 19:50 عصر
احتمالا id‌ رو از نوع کلید اصلی تعریف نکردید وگرنه خطا می داد. id یک موجودیت در طول عمرش در Context نباید تغییر کنه. شما برای یک شی جدید باید یک Student‌ جدید ایجاد کنید. اتفاقی هم که گفتید به این دلیل می افته که اون موجودیت شما در Context‌وجود داره و شما وقتی خصوصیتی از اون رو تغییر می دی در هنگام ذخیره این تغییر تشخیص داده می شه و عمل update صورت می گیره.

hadi-pro1988
سه شنبه 31 مرداد 1391, 20:33 عصر
تقریبا متوجه شدم. فیلد id هم اصلی هست. اینبار هر دو مقدار رو از تکس باکس گرفتم درست شد. ولی هربار که بطور دستی از داخل کد مقدار رو تغییر میدم. مقادیر اضافه شده ی قبلی که توسط C#‎‎ اضافه کرده بودم پاک میشن ولی مقادیری که توسط برنامه SQL Server Management Studio وارد کرده ام اونا پاک نمیشن و باقی میمونن.
سوال من اینه که چجوری اینجوری میشه یعنی مقادیری توسط برنامه SQL Server Management Studio اضافه کرده ام با این تغییر کد پاک نمیشن ولی اونایی که توسط C#‎‎ اضافه کردم پاک میشن و چجوری میشه از پاک شدنشون جلوگیری کنم؟
ممنون

hadi-pro1988
سه شنبه 31 مرداد 1391, 22:31 عصر
یه مشکل جدید پیدا کردم. این کد دکمه insert من هست
int id = Int32.Parse(textBox1.Text);
string name = textBox2.Text;
SchoolEntities bank = new SchoolEntities();
Student ins = new Student();
ins.id = id;
ins.name = name;
bank.Students.AddObject(ins);
bank.SaveChanges();
dataGridView1.DataSource = bank.Students;

من هربار که این کد رو تغییر میدم (فرقی نداره چه کدی بنویسیم حتی اگه کد messagebox هم بنویسم) تمامی اطلاعاتی که به این وسیله به بانکم اضافه کرده ام پاک میشود
لطفا کمکم کنید. واقعا گیر کردم.

gwbasic
چهارشنبه 01 شهریور 1391, 07:28 صبح
سوالات مربوط به دسترسی به داده ها رو در بخش "دسترسی به داده ها" مطرح کنید.

در مورد سوالتون هم حداقل من بارها جواب دادم. جستجو کنید حتما پیدا می کنید.

hadi-pro1988
پنج شنبه 02 شهریور 1391, 19:05 عصر
من درباره مشکلم گشتم ولی جایی راه حلی پیدا نکردم
حتی برنامه دفترچه تلفن رو هم که در این آدرس

http://barnamenevis.org/showthread.php?347385-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D8%B3%D8%A7%D8%AE%D8%AA-%D8%AF%D9%81%D8%AA%D8%B1%DA%86%D9%87-%D8%AA%D9%84%D9%81%D9%86-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-EF-%D9%88-LINQ&highlight=%D8%AF%D9%81%D8%AA%D8%B1%DA%86%D9%87+%D8 %AA%D9%84%D9%81%D9%86
هست روهم امتحان کردم ولی باز هم همون مشکل رو داشتم . از اساتید محترم کسی راه حلی نداره؟