当我执行下面的脚本时,我有以下错误。错误是关于什么,如何解决?
Insert table(OperationID,OpDescription,FilterID)
values (20,'Hierachy Update',1)
错误:
服务器:Msg 544,级别16,状态1,线路1 当IDENTITY_INSERT设置为OFF时,无法为表'table'中的标识列插入显式值。
当我执行下面的脚本时,我有以下错误。错误是关于什么,如何解决?
Insert table(OperationID,OpDescription,FilterID)
values (20,'Hierachy Update',1)
错误:
服务器:Msg 544,级别16,状态1,线路1 当IDENTITY_INSERT设置为OFF时,无法为表'table'中的标识列插入显式值。
当前回答
您正在为OperationId插入值,这是一个标识列。
您可以像这样在表上打开标识插入,以便您可以指定自己的标识值。
SET IDENTITY_INSERT Table1 ON
INSERT INTO Table1
/*Note the column list is REQUIRED here, not optional*/
(OperationID,
OpDescription,
FilterID)
VALUES (20,
'Hierachy Update',
1)
SET IDENTITY_INSERT Table1 OFF
其他回答
在我的情况下,我插入了比表中定义的更多的字符。
在我的表列用nvarchar(3)定义,我传递了超过3个字符,同样的错误消息来了。
这不是答案,但在某些情况下可能是类似的问题
另一种情况是检查主键是否与你的类名称相同,唯一的区别是你的主键有一个'ID'附加在它上面,或者在与类如何命名无关的主键上指定[Key]。
我使用asp.net core 5.0,我得到这个错误。我得到这个错误,因为我添加了另一个数据并触发了另一个.SaveChanges()方法,如下所示:
_unitOfWorkVval.RepositoryVariantValue.Create(variantValue);
int request = HttpContext.Response.StatusCode;
if (request == 200)
{
int tryCatch = _unitOfWorkCVar.Complete();
if (tryCatch != 0)
{
productVariant.CategoryVariantID = variantValue.CategoryVariantID;
productVariant.ProductID = variantValue.ProductID;
productVariant.CreatedDate = DateTime.Now;
_unitOfWorkProductVariant.RepositoryProductVariant.Create(productVariant);
_unitOfWorkVval.RepositoryVariantValue.Create(variantValue);
int request2 = HttpContext.Response.StatusCode;
if(request==200)
{
int tryCatch2=_unitOfWorkProductVariant.Complete();//The point where i get that error
}///.......
如果您使用Oracle SQL Developer进行连接,请记住添加/sqldev:stmt/
/sqldev:stmt/ set identity_insert TABLE on
如果您使用Interface并以通用方式实现savechanges方法,则会出现使用非类型化DBContext或DBSet的问题
如果这是您的情况,我建议使用强类型的dbcontext
MyDBContext.MyEntity.Add(mynewObject)
那么,保存更改就可以了