2012-06-17 6 views
0

사용자가 등록한 후 데이터를 데이터베이스에 저장하고 싶습니다. 계정 컨트롤러의 Registerfunctin에 코드를 작성했습니다. 코드는 다음과 같습니다.asp.net mvc3 데이터베이스에 데이터를 저장할 수 없습니다

[HttpPost] 
     public ActionResult Register(RegisterModel model) 
     { 
      if (ModelState.IsValid) 
      { 
       // Attempt to register the user 
       MembershipCreateStatus createStatus; 
       Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus); 

       if (createStatus == MembershipCreateStatus.Success) 
       { 
        FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */); 
        ///My code for saving in dtabase 
          Recommend ad = new Recommend();  
          ad.estate = 1; 
          ad.industry = 1; 
          storedb.AddToRecommends(ad);   
          storedb.SaveChanges(); 
        /// 
        return RedirectToAction("Index", "Home"); 
       } 
       else 
       { 
        ModelState.AddModelError("", ErrorCodeToString(createStatus)); 
       } 
      } 


      // If we got this far, something failed, redisplay form 
      return View(model); 
     } 

권장 사항은 부동산 및 산업 칼럼에 1을 저장하고자하는 테이블의 이름입니다. 나는 다른 컨트롤러에 befor를 저장하기 위해이 방법을 사용하고 모든 확인했다,하지만 지금은이 예외를 얻을 :

Exception

수 누군가가 나에게 무슨 문제를 알려줍니다? 고마워

+1

StoredProcedure를 사용하여이 권장 테이블에 대한 추가 및 업데이트를 처리하고 있습니까? –

+0

여기에 세부 정보를 "클립 보드에 예외 세부 정보 복사"에 붙여 넣을 수 있습니까? 이 정보는 일반적으로 훨씬 더 유용합니다. 또한 테이블 디자인 사진을 붙여 넣을 수 있습니까? – Sparkle

답변

2

엔티티 세트 Recommend과 타입 RecommendDefining Query으로 정의됩니다. 즉, EDMX 파일의 저장소 스키마에 지정된 SQL 쿼리의 결과입니다. 이는 데이터베이스에서보기를 매핑하는 것과 비슷합니다. 즉, 읽기 전용이며 업데이트 할 수없고 데이터를 세트에 삽입 할 수 없으며 데이터를 삭제할 수 없습니다.

정의 쿼리로 정의 된 엔티티의 삽입, 업데이트, 삭제 작업에 map Stored Procedures이 가능하지만 예외적으로 삽입 작업을 지원하는 프로 시저가 지정되지 않았다는 메시지가 표시됩니다.

Recommend테이블에 대해 이야기하고 있으므로 질문에 Recommend 세트가이 테이블에 직접 매핑되지 않습니다. 내가 아는 한 정의 쿼리는 개발자가 수동으로 작성하고 수동으로 EDMX 파일에 저장해야합니다. "데이터베이스에서 모델 업데이트"는 정의 쿼리를 작성하지 않습니다. 누가이 쿼리를 작성 했습니까? 어떻게 EDMX 파일을 만들었습니까? 데이터베이스 - 처음 또는 모델 - 처음 또는 직접 작성한 XML 또는 ...?

편집

위의 내 대답의 마지막 단락은 올바르지 않습니다. 개발자가 수동으로 정의 쿼리를 작성할 수 있지만 데이터베이스 우선 접근법을 사용하면 훨씬 더 일 가능성이 있습니다. 데이터베이스의 테이블에 기본 키가 없다는 것입니다. 이 경우 the answer here에 적용 테이블이이 뷰으로 처리되는 기본 키없이 발생 음

.

및 뷰는 에서 StorageModel \ EntitySet [N] \ DefiningQuery 소자 (참조하는 XML 에디터 오픈)을 EDMX 파일에 나타낸다.

해결 방법 : 데이터베이스에 Recommend 테이블에 기본 키가 있는지 확인하십시오. 키가 없으면 추가하십시오.

관련 문제