2010-01-15 2 views
0

나는 주어진 parentID (ServiceID)를 가진 새로운 Category를 삽입하는 간단한 폼을 가지고있다.
부모님 자녀 관계는 다음과 같습니다.

서비스> 카테고리ParentID, 이상한 동작을 기반으로 데이터 삽입 ASP.NET MVC?

서비스 id를 기반으로 카테고리를 생성하기위한 내 URL이
/관리/카테고리/만들기입니다/3 => "3은 서비스 id에게 있습니다"

내 작업 방법은이

[AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult Create(int? id, Category category) 
     { 
      if (ModelState.IsValid) 
      { 
       try 
       { 
        category.Service = dbService.GetAll().WithServiceId(id.Value).SingleOrDefault(); 
        dbCategory.Add(category); 
        dbCategory.Save(); 
        return RedirectToRoute("List_Categories", new { ServiceId = id.Value }); 
       } 
       catch 
       { 
        ModelState.AddRuleViolation(category.GetRuleViolations()); 
       } 
      } 
      return 
       View .... 

DB 작업에는 LinqToSql이 사용됩니다. 어쨌든 이상한 부분이 여기에서 시작됩니다. 데이터를 저장할 때 범주 테이블에 데이터를 저장하는 대신 서비스 테이블에 데이터를 삽입하고 범주 테이블에 삽입 된 데이터에 새로 삽입 된 ServiceID가 삽입됩니다.

ASP.NET MVC ModelBinder에 문제가 있습니까? 아니면 내가 보지 못하는 실수를하고 있습니까?
여러 프로젝트에서 LinqToSql을 사용했으며 이와 같은 문제가 발생하지 않았습니다.

답변

1

LINQ To SQL 설정에 오류가있을 수 있습니다. 서비스 ID가 DB의 자동 생성 필드입니까? LINQ to SQL 클래스에서 이와 같이 표시됩니까? 서비스가 데이터 컨텍스트에서 연결을 끊은 다음 제출하기 전에 다시 연결하지 않습니까? 그렇다면 서비스에 범주를 추가하고 업데이트 된 서비스를 저장해 보았습니까?

var service = ... 
    service.Categories.Add(category); 
    service.Save(); 
+0

예, ServiceID는 자동 생성되며 LinqToSQL 클래스에 표시됩니다. 카테고리를 저장하기 전에 데이터 인터페이스와의 연결이 끊어집니다. Categor.Service –

+0

서비스를 통해 범주를 추가하는 시도하고 그것을 일한 db 서비스를 가져옵니다. 그러나 상위 엔티티로 카테고리를 저장하려고하면 새로운 서비스와 범주가 새로 추가 된 serviceID로 삽입됩니다. –

+0

검색된 것과 동일한 서비스라는 것을 알지 못하는 것 같습니다. 범주를 저장하기 전에 데이터 컨텍스트에 다시 연결해야합니다. – tvanfosson

1

카테고리 개체의 출처는 어디입니까? ASP.NET MVC 모델 바인딩을 제공하기 위해 ASP.NET MVC Model 바인딩을 사용하고 있지만 POST를 만들기 위해서는 폼이 필요합니다. 그것은 형식을 보는 것을 도울 것입니다.

개인적으로 필자는 개인적으로 내 활동 서명에 FormCollection (비즈니스 모델 클래스가 아닌)을 사용하고 게시 된 데이터를 직접 FormCollection에서 가져옵니다. 조만간 Model Binding이 받아들이지 않을 다양한 일대 다, 다 대다 관계가있는 복잡한 객체가 생겨나 고 혼자서 구성해야합니다.

+0

답장을 보내 주셔서 감사합니다. 나는 그것을 해결할 수 없었습니다. 그것은 datacontext에 관한 것입니다. 이 작업을 수행하는 대신
category.Service = dbService.GetAll(). WithServiceId (id.Value) .SingleOrDefault(); 나는 이것을했다
category.ServiceID = id.Value; –

관련 문제