نمایش نتایج 1 تا 2 از 2

نام تاپیک: رفع خطای Cannot insert explicit value for identity column in table IDENTITY_INSERT is OFF

  1. #1

    Exclamation رفع خطای Cannot insert explicit value for identity column in table IDENTITY_INSERT is OFF

    با سلام خدمت دوستان..
    عمدتا در هنگام اینسرت یا اضافه کردن یک دیتا، خطایی که در زیر آمده بروز میده و بعد از یک ایست برنامه و راه اندازی مجدد خطایی نمیده.

    Microsoft.EntityFrameworkCore.DbUpdateException: 'An error occurred while saving the entity changes. See the inner exception for details.'
    SqlException: Cannot insert explicit value for identity column in table 'tbl_Files' when IDENTITY_INSERT is set to OFF.

    با این که داخل کد در هنگام ذخیره کردن دیتا به صورت زیر هم عمل کردم، کماکان این خطا رخ میده.

    emdadDB.TblFiles.Add (tblFile);
    emdadDB.Database.ExecuteSqlRaw ("SET IDENTITY_INSERT dbo.tbl_Files ON;");
    emdadDB.SaveChanges ();
    emdadDB.Database.ExecuteSqlRaw ("SET IDENTITY_INSERT dbo.tbl_Files OFF;");


    خطا دقیقا روی خط SaveChanges رخ میده.

  2. #2
    کاربر دائمی آواتار bitasoft.ir
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    جنگلهای تاریک اصفهان
    سن
    44
    پست
    279

    نقل قول: رفع خطای Cannot insert explicit value for identity column in table IDENTITY_INSERT is OFF

    این خطا به دلیل تلاش برای وارد کردن مقدار دستی به یک ستون Identity در جدول مرتبط با tbl_Files رخ می‌دهد. ستون‌های Identity به صورت خودکار توسط SQL Server مقداردهی می‌شوند و نمی‌توان به صورت دستی به آنها مقدار دهی کرد. برای رفع این خطا، می‌توانید اقدامات زیر را انجام دهید:
    حذف کدهای مرتبط با IDENTITY_INSERT: ابتدا مطمئن شوید که کدهای زیر را از برنامه‌ی خود حذف کرده‌اید، چرا که از IDENTITY_INSERT برای جلوگیری از خطای مرتبط با مقداردهی دستی به ستون Identity استفاده نمی‌شود.
    emdadDB.Database.ExecuteSqlRaw("SET IDENTITY_INSERT dbo.tbl_Files ON;");
    emdadDB.Database.ExecuteSqlRaw("SET IDENTITY_INSERT dbo.tbl_Files OFF;");
    اطمینان از تنظیمات مدل: اطمینان حاصل کنید که در مدل شما، ستون مرتبط با Identity به درستی تنظیم شده باشد. برای این کار، از تزریق ویژگی [Key] به خصوصیتی که به عنوان کلید اصلی (Primary Key) استفاده می‌شود، استفاده کنید. به عنوان مثال:
    public class TblFile
    {
    [Key]
    public int FileId { get; set; }
    // سایر ویژگی‌ها
    }
    استفاده از DatabaseGeneratedOption.Identity: اگر از Entity Framework Core استفاده می‌کنید، می‌توانید با استفاده از ویژگی [DatabaseGenerated(DatabaseGeneratedOption.Identity )] به ستون Identity اعلام کنید که مقدار آن به صورت خودکار توسط پایگاه داده تعیین شود. به عنوان مثال:

    public class TblFile
    {
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity )]
    public int FileId { get; set; }
    // سایر ویژگی‌ها
    }
    استفاده از Add() بدون تنظیم دستی ID: وقتی یک مورد جدید را به DbContext اضافه می‌کنید، از Add() بدون تنظیم ID به صورت دستی استفاده کنید. به این صورت مقدار ID به صورت خودکار توسط پایگاه داده تعیین خواهد شد:
    emdadDB.TblFiles.Add(tblFile);
    emdadDB.SaveChanges();


    بررسی ویژگی‌ها: مطمئن شوید که در تعریف مدل و مهاجرت‌ها، هیچ تنظیمات غیرمجازی برای ستون Identity وجود ندارد که ممکن است مقداردهی دستی را فراموش کنند.
    با انجام این مراحل، امکان تولید خطا مرتبط با مقداردهی دستی به ستون Identity باید کاهش یابد و عملیات افزودن مورد جدید به جدول tbl_Files بدون مشکل انجام شود.

    نقل قول نوشته شده توسط mahdibham مشاهده تاپیک
    با سلام خدمت دوستان..
    عمدتا در هنگام اینسرت یا اضافه کردن یک دیتا، خطایی که در زیر آمده بروز میده و بعد از یک ایست برنامه و راه اندازی مجدد خطایی نمیده.

    Microsoft.EntityFrameworkCore.DbUpdateException: 'An error occurred while saving the entity changes. See the inner exception for details.'
    SqlException: Cannot insert explicit value for identity column in table 'tbl_Files' when IDENTITY_INSERT is set to OFF.

    با این که داخل کد در هنگام ذخیره کردن دیتا به صورت زیر هم عمل کردم، کماکان این خطا رخ میده.

    emdadDB.TblFiles.Add (tblFile);
    emdadDB.Database.ExecuteSqlRaw ("SET IDENTITY_INSERT dbo.tbl_Files ON;");
    emdadDB.SaveChanges ();
    emdadDB.Database.ExecuteSqlRaw ("SET IDENTITY_INSERT dbo.tbl_Files OFF;");


    خطا دقیقا روی خط SaveChanges رخ میده.

تاپیک های مشابه

  1. توضیح دستور identity_insert در یک پرس و جوی insert
    نوشته شده توسط zimzim در بخش T-SQL
    پاسخ: 3
    آخرین پست: سه شنبه 31 مرداد 1391, 09:08 صبح
  2. گرفتن مقدار identity column پس از insert ؟
    نوشته شده توسط ramin_rp در بخش T-SQL
    پاسخ: 10
    آخرین پست: شنبه 08 بهمن 1390, 07:57 صبح
  3. Identity Column
    نوشته شده توسط farhaneh در بخش SQL Server
    پاسخ: 5
    آخرین پست: سه شنبه 24 شهریور 1388, 08:42 صبح
  4. An explicit value for the identity column in table 'table1' can only be specified when a column list
    نوشته شده توسط rahil_2008 در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 3
    آخرین پست: دوشنبه 16 شهریور 1388, 01:04 صبح
  5. Identity Column
    نوشته شده توسط farhaneh در بخش SQL Server
    پاسخ: 2
    آخرین پست: شنبه 07 شهریور 1388, 02:13 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •