دلیل خطای unable to update the entityset becaseit has e definingquery and no<insertfunction> element exists
سلام دوستان جداول داخل sql server ساختم و در سی شارپ در پروژه دارم از جداولم استفاده میکنم ولی در پروژه میخوام اطلاعات جدید در جداول اضافه کنم . اضافه نمیشه خطا میده
دقیقا در قسمت savechanges خطا میده
خطایی که میده اینه:
unable to update the entityset "userlogin" becaseit has e definingquery and no<insertfunction> element exists in the <modification function mapping> element to support the current operation.
و این ک من دارم تازه آموزش میبینم لطفا یکمی به زبان ساده تر بگین مشکل این چیه که متوجه بشم .
خیلی ممنونم ازتون
پاسخ هوش مصنوعی
این خطا زمانی رخ می دهد که شما سعی دارید داده هایی را در یک مجموعه موجودیتی (EntitySet) که به صورت صحیح پیکربندی نشده است، به روز رسانی یا اضافه کنید. به عبارت دیگر، Entity Framework نمی تواند عملیات درج (Insert) را در این مجموعه ای که تعریف شده، به درستی انجام دهد.
به طور خاص، این خطا به این دلیل است که:
- شما مجموعه ای به نام "userlogin" دارید که یک "تعریف پرسش" (Defining Query) برای آن وجود دارد. این معمولاً به دلیل این است که Entity Framework نمی تواند تشخیص دهد این مجموعه چه نوع عملیاتی را باید بر روی آن انجام دهد.
- هیچ عنصر `
` برای این موجودیت تعریف نشده است. بنابراین، Entity Framework نمی داند چگونه باید داده های جدید را به این جدول اضافه کند.
برای حل این مشکل، می توانید مراحل زیر را طی کنید:
- مطمین شوید که جدول "userlogin" در پایگاه داده به درستی ایجاد شده است و دارای کلید اولیه است.
- اگر از Database First استفاده می کنید، اطمینان حاصل کنید که مدل شما به روز است و هیچ خلاصه ای از Entity Framework وجود ندارد.
- اگر از Code First استفاده می کنید، اطمینان حاصل کنید که موجودیت شما به درستی پیکربندی شده و دارای `DbSet
` در کلاس `DbContext` شما می باشد. - با استفاده از Migrations، پایگاه داده خود را بروزرسانی کنید.
اگر پس از بررسی موارد فوق هنوز با مشکل مواجه هستید، لطفاً اطلاعات بیشتری از کد و پیکربندی خود ارایه دهید تا بتوانیم بهتر کمک کنیم.
با سلام. دوست عزیز خوب می شد کدهایی که نوشتید رو قرار می دادید تا بهتر بشه نظر داد یا حداقل متن خطا رو میذاشتید. ولی به هر حال این مشکلی که شما میگید دلایل متفاوتی میتونه داشته باشه. حالا چند موردش رو میگم امیدوارم مشکل برطرف بشه. احتمالا جوری که من متوجه شدم دارید از مدل در پروژه تون استفاده میکنید. و چون خطا در قسمت SaveChange هستش پس مربوط به دیتابیس و داده ها میشه. اول یکبار تمام تیبل ها و ویوهای داخل مدل رو حذف کنید و دوباره اضافه کنید اگر مشکل برطرف نشد روش های زیر رو هم تست کنید.
1- اگر ID تیبل شما از نوع Identity نیست مطمئن بشید که داخل پروژه دارید این آی دی رو به صورت غیر تکراری پاس میدید. یا برعکس اگر از نوع Identity هست مطمئن بشید که داخل پروژه دیگه مقدار دهی نشه.
2- به Allow Nulls فیلدها در دیتابیس دقت کنید اگر این تیک نخورده باشد باید حتما در مدل هم مقداردهی بشه و مقدار به دیتابیس ارسال بشه.
3 - به Data Type ستون ها در دیتابیس دقت کنید. مثلا اگر یه فیلد رو از نوع varchar(50 قرار دادید در پروژه نباید تعداد کاراکترهای ارسالی بیشتر از 50 باشد. میتوانید این خاصیت رو در MaxLength تکست باکس کنترل کنید.
4 - موارد دیگه ای هم میتونه باشه که العان حضور ذهن ندارم ولی این سه مورد مهمترین اونها هستند.
اطلاعاتی که شما دادید تقریبا هیچ کمکی نمیشه کرد. لطفا سوال رو ویرایش کنید و کدهاتون رو قرار بدید
سلام. دوست عزیز به نظر میرسه شما insert رو روی ویو زدید. ویوها حالت Insert ندارند.
بله روی ویو زدم ولی حالت insert نداره یعنی چی باید چیکار کنم؟
با سلام
دوست گرامي براي اينکه ساير برنامه نويسان بتونن به سوالات شما پاسخ صحيح و روشني بدن شما بايد سوال خودتون رو کامل توضيح بديد.
شما بايستي کدهايي که توي پروژه استفاده کرديد رو قرار بديد
از خطاهاي خودتون يا عکس قرار بديد يا متن خطا رو قرار بديد
توضيحات شما تقريبا ناقص هست و تمامي پاسخ هايي که سايرين ميدن همه با اما و اگر هست و نميشه پاسخ دقيقي به سوال شما داد. ضمنا از ارسال سوال تکراري پرهيز کنيد و در صورت نياز سوال رو ويرايش کنيد
موفق باشيد
یعنی اینکه بجای نام ویو نام تیبل اون ویو رو بنویس. بالاخره شما ویو رو از روی یه تیبل ساختی دیگه. اسم اون تیبل رو بنویس.
System.Data.Entity.Validation.DbEntityValidationException: 'Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.'
اطلاعات دارم از طريق فرم وارد جدولم ميکنم ولي اصلا سيو نميشه
اينم کد هاي دستورم
userlogin userlog = new userlogin();
userlog.computername = computername;
userlog.ipaddress = ip;
userlog.userid = publicClass.gusername;
userlog.enterdate =String.Format("{0:yyyy:mm:dd}", Convert.ToDateTime(chalender.Text) + "-" + DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTime.Now.Second );
detabase.userlogins.Add(userlog);
detabase.SaveChanges();
سلام
همونطوری که در بخشی از متن خطای شما نوشته "See 'EntityValidationErrors' property for more details"
وقتی خطا به شما میده یک گزینه ای توی صفحه خطا وجود داره به نام View Details که شما باید روش کلیک کنید و داخل فرمی که باز میشه گزینه inner Exception رو ببینید تا دلیل خطا مشخص باشه.
ولی طبق گفته خطا شما وقتی دارید مقادیر کلاس userLogin رو مقداردهی می کنید یکی از فیلدها رو دارید اشتباه مقداردهی می کنید. که من احتمال میدم کد زیر باشه
userlog.enterdate =String.Format("{0:yyyy:mm:dd}", Convert.ToDateTime(chalender.Text) + "-" + DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTime.Now.Second );
دقت کنید که فیلد enterdate رو شما دارید احتمالا اشتباه مقداردهی می کنید. فکر میکنم به جای chalender.Text باید chalender.Value.year و ... باشه.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول