2013-06-11 8 views
1

저는 MVC에 상당히 익숙해졌습니다. 여기 내 액션 코드는 MVC 프로젝트에서 내 컨트롤러에있어 내가 일하고 있어요 : 내가 VS2010이 디버깅 한 각 단계가 오류없이 통과SaveChanges()가 데이터를 저장하지 않습니다.

[HttpPost] 
public ActionResult Create(User usr , string submitBtn, FormCollection form, int id) 
{ 
    var db = new UsrSqlEntities(); 

    foreach (string fm in form) 
    { 
     if (fm.Contains("PayMonthOne")) 
      usr.fName = Int32.Parse(form[fm]); 

    } 

    db.SaveChanges(); 
} 

즉 '사용자는'내 엔티티 프레임 워크에 존재하는 내 'form'은 'fName'에 전달되는 값을 포함합니다. 그러나 SSMS 2008에서 SQlProfiler를 실행해도 아무런 활동도 나타나지 않습니다 (물론 내 데이터베이스에는 기록되지 않습니다). 내 엔티티 프레임 워크는이 엔티티에 대한 업데이트를 수행 할 때 DB의 변경 사항이 EF에 반영되므로이 db에 모델링됩니다.

SaveChanges()가 작동하지 않는 이유를 모르겠습니다. 누군가 도울 수 있습니까?

답변

2

엔티티를 업데이트하는 경우 usr 개체를 db 컨텍스트에 연결하고 수정 된 것으로 표시해야합니다.

db.Attach(usr); 
db.Context.Entry(usr).State = EntityState.Modified; 

이 새로운 경우를 통해 추가해야합니다

var db=new UsrSqlEntities(); /* Module Level declaration */ 

    [HttpPost] 
    public ActionResult Create(User usr) 
    { 
     db.Users.Add(usr); /* Add usr object to Users DbSet */ 

     db.SaveChanges(); /* Save all changes to the database */ 
    } 

이십시오 :

db.SaveChanges() 
+0

실제로. 일단 클라이언트로 가서 DB 참조가 사라지면 다시 조회해야합니다. –

+0

내 db 전용 ContextOptions에는 인텔리 센스 '컨텍스트'옵션이 없습니다. – user2284341

+0

'db.Entry (usr) .State = EntityState.Modified; 시도하십시오. –

0

나는 다음과 같은 추천 할 것입니다 그리고 전화

db.Add(usr); 

새 사용자를 만들고 있다고 가정하고 사용자는 사용자 개체에 대한 DbSet 및 사용자 개체에 int 또는 int 유형의 "PayMonthOne"속성이 있습니다.

+0

EF가 만들어 졌을 때 '사용자'가 Pluralze 확인란을 선택한다고 가정 할 수 있습니까? 그렇다면 나의 EF는 나의 이전 코멘트 (모든 테이블에 대해 AddTo ?)를 설명 할 수있는 이런 방법으로 생성되지 않았다. – user2284341

+0

예, pluralize 상자는 "User"라는 컬렉션을 포함하는 "Users"라는 DbSet으로 "User"라는 테이블을 변경합니다. 하지만 AddTo의 출처에 대해서는 잘 모르겠습니다. DbContext를 사용하고 있습니까? UsrSqlEntities의 기본 클래스는 무엇입니까? –

+0

기본 클래스는 ObjectContext입니다. – user2284341

관련 문제