PDA

View Full Version : مشکل در insert با Linq



f.beigirad
جمعه 20 بهمن 1391, 16:20 عصر
با سلام و درود بر شما
///////لطفا مطالعه فرمایید////////
میخواستم بدونم علت نمایش این ارور چیه؟؟؟؟؟؟؟
متن ارور :
An error occurred while updating the entries. See the inner exception for details.

من دستور insert م رو اینطور نوشتم:

AzmoonDB4Entities db = new AzmoonDB4Entities();
tUser ts = new tUser();
ts.UserName = "a";
ts.PassWord = "b";
ts.Q1 = "c";
ts.A1 = "d";
ts.Q2 = "e";
ts.A2 = "f";

db.AddTotUser(ts);
db.SaveChanges();

و این هم ساختار جدولی که توی دیتابیسمه:
CREATE TABLE "tUser" ("ID" INTEGER PRIMARY KEY NOT NULL , "UserName" TEXT NOT NULL , "PassWord" TEXT NOT NULL , "Q1" TEXT NOT NULL , "A1" TEXT NOT NULL , "Q2" TEXT NOT NULL , "A2" TEXT NOT NULL )

دیتابیس مورد استفادم هم sqlite هست.تازگیا با linq و entity اشنا شدم ولی همچنان با دستوراتش مشکل دارم.

mostafa.hnz
جمعه 20 بهمن 1391, 17:37 عصر
سلام شما برای درج باید از متد AddObject استفاده کنید
وقبل ار اون باید نام entity خودتون رو بیارید
مثلا


tamrinEntities objc = new tamrinEntities();
user ob = new user() { username = "", email = "" };
objc.users.AddObject(ob);
objc.SaveChanges();

f.beigirad
جمعه 20 بهمن 1391, 18:15 عصر
نه دوست عزیز.
این هم امنحان کردم بازهم قبول نکرد و باز هم همین ارور :
An error occurred while updating the entries. See the inner exception for details.

kordestan
پنج شنبه 01 فروردین 1392, 21:15 عصر
سلام...تو linq من از این دستور استفاده میکنم برای insert :
http://1.bseo.net63.net/images/40ca38cefb1d.jpg
این کد رو توسیشارپ بارها نوشتم جواب هم داده....نمیدونم شما تو چه زبانی میخوای به کارش ببری و فک نکنم زیاد سخت باشه
:لبخندساده:

JaVa
شنبه 03 فروردین 1392, 23:19 عصر
سلام.

من برای insert اینو می نویسم. البته با ویبی

Dim ins As New tbl
With ins
.age = txtage.Text
.fname = txtname.Text
.lname = txtfamily.Text
.id = txtcode.Text
End With

Bank.AddTotbl(ins)
Bank.SaveChanges()

یه مشکل کوچیکی که وجود داره اینه که بعد از درج توی دتاگرید نمایش نمیده تغیرات باید اینو نوشت تا تغیرات نمایش بده

Dim s = (From q In Bank.tbl Select q.id, q.lname)
dgv.DataSource = s

نمیشه کاریش کرد؟

kordestan
یک شنبه 04 فروردین 1392, 01:00 صبح
متاسفانه من ویبی کار نمیکنم ولی مطمئنن اگه یه سرچ تو اینترنت بزنی مشکلت حل میشه...شایدم تو بخش وی بی دات نت تو انجمن جوابتونو پیدا کنید
:لبخندساده:

Sajjad.Aghapour
چهارشنبه 07 فروردین 1392, 09:39 صبح
@f.beigirad: (http://barnamenevis.org/member.php?267837-f.beigirad)
لطفا متن کامل خطا رو قرار بدید تا دوستان بتونن بهتر به شما کمک کنن. متن کامل خطا رو میتونید از داخل Inner Exception استخراج کنید.



دیتابیس مورد استفادم هم sqlite هست.تازگیا با linq و entity اشنا شدم ولی همچنان با دستوراتش مشکل دارم.

مشکل شما احتمالا با Primary Key هست که من ندیدم در کدتون مقداردهی بشه. شما باید به کلیدتون داخل کد مقدار بدید یا در Sqlite کلیدتون رو AutoIncrement کنید.

tooraj_azizi_1035
پنج شنبه 08 فروردین 1392, 17:51 عصر
سلام
لطفاً کاری کنید تا ما بتونیم Exception داخلی رو بدونیم متنش چیه.

See the inner exception for details

piroozman
شنبه 10 فروردین 1392, 13:08 عصر
مشكل اصلي شما در كليد مي باشد. اي دي شما بايد به صورت AutoIncrement باشه و اگر نيست و هنوز خطا رو دريافت مي كنيد (هر چند هنوز خطا رو زيارت نكرديم) بهتره كه خيلي معطلش نكني. يه پروسيجر بنويس و با استفاده از اون داده هات رو به داخل جدول insert كن. به نظر بنده بعضي وقتها پاك كردن مسئله خيلي ارزونتر از حل خود مسئله است. هر چند اينجا به نوعي حل كردن مسئله هم ذكر شده است.

hogava
شنبه 21 اردیبهشت 1392, 00:30 صبح
سلام شما برای درج باید از متد AddObject استفاده کنید
وقبل ار اون باید نام entity خودتون رو بیارید
مثلا


tamrinEntities objc = new tamrinEntities();
user ob = new user() { username = "", email = "" };
objc.users.AddObject(ob);
objc.SaveChanges();

من مثلا اینجا از user استفاده می کنم ارور زیر رو میده:


Error 1 The type or namespace name 'user' could not be found (are you missing a using directive or an assembly reference?) ..\WindowsFormsApplication1\Form1.cs 29 13 WindowsFormsApplication1

f.beigirad
شنبه 21 اردیبهشت 1392, 23:40 عصر
درود بر همه ی دوستان.
خیلی وقته این تاپیک رو ندیده بودم .و اینم بگم مشکل من توی insert اطلاعات همون AutoInc نکردن کلید اصلی بود.با تشکر از همه ی دوستان.

و در جواب کاربر hogava باید بگم که شما باید دستورات linq رو درون یک using قرار بدین.

به این صورت :

using(var db=new tamrinEntities())
{
code haye shoma ...
...........
}



و درون این بلاک شما دسترسی دارید به کل دیتابیسی که ازش مدل رو ساختید.
و اینم بگم که tUser که تو پست اولم یاد آور شدم اسم جدولیه که میخوام اطلاعاتی واردش کنم.
برای همین کار یه نمونه ازش میسازم و مقدار دهیش میکنم و بعد از ادد کردن , تغییراتو ذخیره میکنم.


موفق باشید.