2016-05-09 27 views
0

Entity Framework Code Firstを使用してレコードを挿入しようとしています。レコードを保存しようとすると、次のエラーが表示されます。insertステートメントが予想外の行数に影響を受けました

ストアの更新、挿入、または削除のステートメントが予期しない行数(0)に影響を与えました。エンティティはロードされた後に変更または削除された可能性があります。 ObjectStateManagerエントリを更新します。

説明現在のWeb要求の実行中に、未処理の例外が発生しました。エラーの詳細とコード内のどこで発生したのかについては、スタックトレースを参照してください。

例外の詳細:System.Data.OptimisticConcurrencyException:ストアの更新、挿入、または削除ステートメントが予想外の行数(0)に影響を与えました。エンティティはロードされた後に変更または削除された可能性があります。 ObjectStateManagerエントリを更新します。

モデル:

[Table("tblActual_CategoryItem")] 
    public class Actual_CategoryItem 
    { 
     [Key] 
     [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
     public int ID { get; set; } 
     public int? AgencyID { get; set; } 
     public string UniqueURL { get; set; } 
     public string Name { get; set; } 
     public string Price { get; set; } 
     public string Location { get; set; } 
     public string LastUpdated { get; set; } 
     public string Description { get; set; } 
     public string PhotoURL1 { get; set; } 
     public string PhotoURL2 { get; set; } 
     public string AgencyName { get; set; } 
     public string AgencyUniqueURL { get; set; } 
     public string AgencyPhotoURL { get; set; } 
     public string AgentName { get; set; } 
     public string AgentContactNo { get; set; } 
     public string AgentEmail { get; set; } 
     public DateTime? ImportedDateTime { get; set; } 
     public int? CategoryID { get; set; } 
     public int? UserID { get; set; } 
     public string Suburb { get; set; } 
     public string State { get; set; } 
     public string PostCode { get; set; } 

     [ForeignKey("CategoryID")] 
     public CategoryType Category { get; set; } 

     [ForeignKey("AgencyID")] 
     public Actual_AgencyProfile agency { get; set; } 

     [ForeignKey("UserID")] 
     public UserProfile userProfile { get; set; } 
    } 

コントローラー:

[HttpPost] 
     public ActionResult Create([Bind(Exclude = "ID")]Actual_CategoryItem actual_categoryitem) 
     { 
      if (ModelState.IsValid) 
      { 
       db.ItemList.Add(actual_categoryitem); 

       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 

      ViewBag.CategoryID = new SelectList(db.CategoryTypes, "CategoryID", "TypeName", actual_categoryitem.CategoryID); 
      ViewBag.AgencyID = new SelectList(db.Actual_AgencyProfile, "ID", "UniqueURL", actual_categoryitem.AgencyID); 
      return View(actual_categoryitem); 
     } 

ビュー:

@using (Html.BeginForm()) 
{ 
    @Html.ValidationSummary(false) 
    @Html.HiddenFor(model => model.ID) 
    <div class="left-col"> 
     <div class="clearfix"></div> 
     <br /> 


     <div class="column-a col-md-12 col-sm-12 col-xs-12" style="padding-top: 0px;"> 
      <div> 
       @Html.ActionLink("Back to List", "Index") 
      </div> 
      <div style="height: auto"> 
       <section class="widget"> 
        <h4 class="widget-title">Add New Post</h4> 


        <div class="kopa-one-two"> 
         <section class="widget"> 

          <div class="entry-item"> 
           <div class="col-md-12"></div> 
          </div> 

          <div id="divAgency"> 
           <div class="entry-item"> 
            <div class="col-md-12">Category : </div> 
           </div> 
           <div class="entry-item"> 
            <div class="col-md-12"> 
             @Html.DropDownList("CategoryID", (IEnumerable<SelectListItem>)ViewBag.CategoryID, new { @class = "form-control" }) 
             @Html.ValidationMessageFor(model => model.CategoryID) 
            </div> 
           </div> 
           <div class="clearfix"></div> 
          </div> 

          <div class="entry-item"> 
           <div class="col-md-12">Business Name: </div> 
          </div> 
          <div class="entry-item"> 
           <div class="col-md-12"> 
            @Html.TextBoxFor(o => o.Name, new { @class = "form-control" }) 
           </div> 
          </div> 
          <div class="clearfix"></div> 

          <div class="entry-item"> 
           <div class="col-md-12">Sale Price : </div> 
          </div> 
          <div class="entry-item"> 
           <div class="col-md-12"> 
            @Html.TextBoxFor(o => o.Price, new { @class = "form-control" }) 
           </div> 
          </div> 
          <div class="clearfix"></div> 

          <div class="entry-item"> 
           <div class="col-md-12">Street Address : </div> 
          </div> 
          <div class="entry-item"> 
           <div class="col-md-12"> 
            @Html.TextBoxFor(o => o.Location, new { @class = "form-control" }) 
           </div> 
          </div> 
          <div class="clearfix"></div> 

          <div class="entry-item"> 
           <div class="col-md-12">State: </div> 
          </div> 
          <div class="entry-item"> 
           <div class="col-md-12"> 
            @Html.DropDownListFor(o => o.State, new List<SelectListItem>() { (new SelectListItem() { Text = "New South Wales", Value = "NSW" }),(new SelectListItem() { Text = "Victoria", Value = "VIC" }), 
           (new SelectListItem() { Text = "Queensland", Value = "QLD" }),(new SelectListItem() { Text = "Western Australia", Value = "WA" }) 
          ,(new SelectListItem() { Text = "ACT", Value = "ACT" }),(new SelectListItem() { Text = "South Australia", Value = "SA" }) 
          ,(new SelectListItem() { Text = "Tasmania", Value = "TAS" }),(new SelectListItem() { Text = "Northern Territory", Value = "NT" })} 
           , "Please Select", new { @class = "form-control" }) 

           </div> 
          </div> 
          <div class="clearfix"></div> 


         </section> 

        </div> 
        <!--kopa-one-third--> 
        <div class="kopa-one-two last"> 
         <section class="widget"> 


          <div class="entry-item"> 
           <div class="col-md-12">Suburb: </div> 
          </div> 
          <div class="entry-item"> 
           <div class="col-md-12"> 
            @Html.TextBoxFor(o => o.Suburb, new { @class = "form-control" }) 

           </div> 
          </div> 
          <div class="clearfix"></div> 

          <div class="entry-item"> 
           <div class="col-md-12">Post Code: </div> 
          </div> 
          <div class="entry-item"> 
           <div class="col-md-12"> 
            @Html.TextBoxFor(o => o.PostCode, new { @class = "form-control" }) 
           </div> 
          </div> 
          <div class="clearfix"></div> 

          <div class="entry-item"> 
           <div class="col-md-12">Contact No: </div> 
          </div> 
          <div class="entry-item"> 
           <div class="col-md-12"> 
            @Html.TextBoxFor(o => o.AgentContactNo, new { @class = "form-control" }) 
           </div> 
          </div> 
          <div class="clearfix"></div> 

          <div class="entry-item"> 
           <div class="col-md-12">Contact Email: </div> 
          </div> 
          <div class="entry-item"> 
           <div class="col-md-12"> 
            @Html.TextBoxFor(o => o.AgentEmail, new { @class = "form-control" }) 
           </div> 
          </div> 

         </section> 
        </div> 


        <!--older-posts--> 
       </section> 
       <!--widget--> 
        <div class="clearfix"></div> 
          <br /> 
          <div class="entry-item"> 
           <div class="col-md-12" style="text-align: right"> 
            <input type="submit" id="submit-comment" value="Submit" class="btn btn-info" /> 
           </div> 
          </div> 
      </div> 

     </div> 
     <div style="padding-left: 30px"> 
      @Html.ActionLink("Back to List", "Index") 
     </div> 
    </div> 

    <div class="right-col"> 
     . 
    </div> 
} 

答えて

0

データベーステーブルにSQLトリガがあると、このエラーが発生します。トリガの最後に次の行を追加すると、問題が解決されました。しかし、これは完璧な解決策ではないかもしれません。

SELECT * FROM deleted UNION ALL 
SELECT * FROM inserted; 
0

あなたが原因となったエンティティIDのバインド(除外)属性を使用していますエンティティのIDの値がHttpPostでゼロになるようにします。 .cshtmlページに非表示のID入力を追加するのを忘れたため、この問題が発生しました。

+0

OPは新しいエンティティを作成しています。 IDは必須ではありません(自動増分フィールドで、その値はデータベースによって生成されます) –

関連する問題