2017-01-12 1 views
0

저는 _job 객체가 있고이 _job 객체에는 관련 작업이 있습니다. 영향을받는 행 (0) 엔티티 수정 또는 실체 이후 삭제 된 수의 예상치 못한 수를엔티티 삭제시 예기치 않은 행 수 (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 

어떻게 해결할 수 있습니까? 감사.

답변

0

이것은 작동합니다. 이 두 테이블 여기

에 대한 ADO.NET 엔터티 데이터 모델 (EDMX)을 작성

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 

: 여기

하면, 데이터베이스 테이블을 만들어 내 breaz 데이터베이스 이름 대신 데이터베이스를 사용하는 방법입니다 귀하의 컨트롤러 :

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(); 
    } 
관련 문제