2017-01-12 51 views
0

私は_jobオブジェクトを持っていますが、この_jobオブジェクトには関連するジョブがあります。影響を受けた行(0)エンティティが変更または 実体以降に削除された可能性の予想外の 数をエンティティの削除時に予期しない行数(0)にストア更新、挿入、または削除文が影響しました

{ "ストアUPDATE、INSERT、またはステートメントを削除します。私は、関連するジョブを削除すると、私はこのエラーを取得していますロードされた 理解した上での情報のため 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

これは機能します。ここで

ではなく、私の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 

は、ここでこの2つのテーブル

ために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(); 
    } 
関連する問題