【问题标题】:Store update, insert, or delete statement affected an unexpected number of rows (0) on deleting entities存储更新、插入或删除语句在删除实体时影响了意外的行数 (0)
【发布时间】:2017-01-12 05:24:03
【问题描述】:

我有一个 _job 对象,这个 _job 对象有相关的工作。当我删除相关工作时,我收到了这个错误:

{"存储更新、插入或删除语句影响了意外 行数 (0)。实体可能已被修改或删除 实体已加载。看 http://go.microsoft.com/fwlink/?LinkId=472540 获取有关信息 理解和处理乐观并发异常。"}

这是我的代码:

      if (_job.relatedJobs.Any())
        {


            foreach(var relatedJob in _job.relatedJobs.ToList())
            {
                jobList.Add(relatedJob );
                _job.relatedJobs.Remove(relatedJob);
            }

            _db.Entry(_job).State = EntityState.Modified;
        }
       _db.Jobs.Add(_job);
       _db.SaveChanges(); //I'm getting the exception at this line

我该如何解决这个问题?谢谢。

【问题讨论】:

    标签: c# asp.net .net entity-framework entity-framework-6


    【解决方案1】:

    这行得通。

    以下是创建数据库表的方法,使用您的数据库而不是我的 breaz 数据库名称:

    USE [Breaz]
    GO
    /****** Object:  Table [dbo].[Job]    Script Date: 1/12/2017 10:00:24 AM ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_PADDING ON
    GO
    CREATE TABLE [dbo].[Job](
        [Id] [int] IDENTITY(1,1) NOT NULL,
        [JobDescription] [varchar](50) NULL,
     CONSTRAINT [PK_Job] PRIMARY KEY CLUSTERED 
    (
        [Id] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    GO
    SET ANSI_PADDING OFF
    GO
    /****** Object:  Table [dbo].[JobRelated]    Script Date: 1/12/2017 10:00:24 AM ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_PADDING ON
    GO
    CREATE TABLE [dbo].[JobRelated](
        [Id] [int] IDENTITY(1,1) NOT NULL,
        [JobId] [int] NULL,
        [RelatedJobDescription] [varchar](10) NULL,
     CONSTRAINT [PK_JobRelated] PRIMARY KEY CLUSTERED 
    (
        [Id] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    GO
    SET ANSI_PADDING OFF
    GO
    SET IDENTITY_INSERT [dbo].[Job] ON 
    
    GO
    INSERT [dbo].[Job] ([Id], [JobDescription]) VALUES (1, N'Cleaning')
    GO
    SET IDENTITY_INSERT [dbo].[Job] OFF
    GO
    SET IDENTITY_INSERT [dbo].[JobRelated] ON 
    
    GO
    INSERT [dbo].[JobRelated] ([Id], [JobId], [RelatedJobDescription]) VALUES (3, 1, N'Mopping')
    GO
    INSERT [dbo].[JobRelated] ([Id], [JobId], [RelatedJobDescription]) VALUES (4, 1, N'Sweeping')
    GO
    SET IDENTITY_INSERT [dbo].[JobRelated] OFF
    GO
    ALTER TABLE [dbo].[JobRelated]  WITH CHECK ADD  CONSTRAINT [FK_JobRelated_Job] FOREIGN KEY([JobId])
    REFERENCES [dbo].[Job] ([Id])
    GO
    ALTER TABLE [dbo].[JobRelated] CHECK CONSTRAINT [FK_JobRelated_Job]
    GO
    

    为这两个表创建一个 ADO.NET 实体数据模型 (EDMX)

    这是你的控制器:

    public ActionResult Index12()  //this Method name can change
        {
    
            using (BreazEntities2 e = new BreazEntities2())  //you will use the dbcontext name you have
            {
                try
                {
    
                    var _job = e.Jobs.Find(1);
                    if (_job.JobRelateds.Any())
                    {
                        foreach (var relatedJob in _job.JobRelateds.ToList())
                        {
                            Job addToJob = new Job();
    
                            //no relateds for this
                            addToJob.JobDescription = "From related to Job->" + relatedJob.RelatedJobDescription;
                            e.Jobs.Add(addToJob);
                            e.JobRelateds.Remove(relatedJob);
                        }
                    }
                    e.SaveChanges();
                }
                catch (DbEntityValidationException ex)
                {
                    foreach (var failure in ex.EntityValidationErrors)
                    {
                        string validationErrors = "";
    
                        foreach (var error in failure.ValidationErrors)
                        {
                            validationErrors += error.PropertyName + "  " + error.ErrorMessage;
                        }
                    }
                }
            }
            return View();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多