2012-06-21 2 views
1

내가 할 수 있는지 보자 단계별로 명확 : InventoryRepository에 정의 된 Remove 방법을 실행Remove 메서드는 DB에서 항목을 제거하지 않습니다.

namespace InventoryManager.Controllers 
{ 
    public class InventoryController : ApiController 
    { 
     private readonly IInventoryRepository repository; 

     //... 

     public HttpResponseMessage DeleteItem(int id) 
     { 
      // Executes fine 
      repository.Remove(id); 
      return new HttpResponseMessage(HttpStatusCode.NoContent); 
     } 
    } 
} 

가 :

namespace InventoryManager.Models 
{ 
    public class InventoryRepository : IInventoryRepository 
    { 
     private InventoryContext context; 

     //... 

     public void Remove(int id) 
     { 
      InventoryItem item = context.Items.Find(id); 

      // Executes fine 
      context.Items.Remove(item); 
     } 
    } 
} 

는하지만, 내 DB를 확인하고 어떤 항목 제거됩니다. 왜 이런거야? 누락 된 정보가있을 수 있으니 다른 정보가 필요하면 알려주십시오.

내 요소가 없어서 디버깅하는 데 문제가 있습니다. 디버깅 방법이나 특정 문제/키워드를 찾으면 내 문제를 해결할 수 있습니다. 감사 할 것입니다.

+0

*** 변경 사항을 확인 하시겠습니까? – xandercoded

+0

오류가 발생하여 변경 사항을 적용하고 있습니까? 어떻게 그렇게? – Josh

+0

Linq to SQL 또는 Entity 프레임 워크를 사용하고 있습니까? – Habib

답변

5

당신이 당신의 DataContext에 대해 Items로 만들 변경 사항을 커밋하고 있는지 확인하십시오

Linq to SQL:

context.SubmitChanges(); 

Entity Framework:

context.SaveChanges(); 
+0

아아 .. 이것은 완벽합니다. 너 한테 맥주 빚 졌어. 이 커밋은 EF를 사용하여 DB를 변경하는 데 필요합니까? – Josh

+0

@Chase 예, 그렇습니다. Entity Framework 헤더에 대한 링크를 추가했습니다. 확인해보십시오. –

+0

예, 아무 것도 암시 적으로 커밋되지 않았습니다. ***의 간단한 질문으로 인해 *** 암시 적으로 실행됩니다. 따라서'SubmitChanges' 또는'SaveChanges'를 사용하여 명시 적으로 커밋 할 필요가 있습니다. – xandercoded

1

public void Remove(int id) 
     { 
      InventoryItem item = context.Items.Find(id); 
      context.Items.Remove(item); 
      context.SaveChanges(); 
     } 
시도
+0

+1 내가 만든 정확한 변화입니다. 나는 그렇게 사소한 것을 간과 한 것이 확실하지 않다. 네가 몇 분만 더 빠르면 네가 받아 들였을거야. – Josh

+0

@Chase 감사하지만, Xander 대답은 내 것보다 낫다. – vikrantx

관련 문제