2009-09-10 3 views
1

SOF에서 몇 가지 질문이 있다는 것을 알고 있지만 누군가가 succintly 예제를 사용하여 대답 할 수 있다면 흥미가있었습니다.asp.net mvc, linq의 여러 테이블에서 더 복잡한 모델을 만드는 방법

저는 linq 및 mvc에 새로운 제품입니다. 많은 정보가 있지만, 데이터로 많은 것을 할 수 있다고 상상하는 방법을 찾기가 어렵습니다. 다음은 그 예입니다.

내가 5 개의 테이블을 가지고 있고, 그 중 일부는 관계가 있고, 그렇지 않은 테이블이 있다고합니다.

그리고이 모든 테이블의 데이터를 제 관점에서 볼 수 있기를 바랍니다.

이 모든 데이터를 모델에 추가하고 해당 단계에서 모두 전달해야합니까, 아니면 나중에 다시 수행해야합니까? 이 모든 정보가 포함 된 dataSet을 생성하고 뷰에서 추출하는 방법을 상상할 수는 있지만 잘못 생각합니다.

나는 또한 5 개의 별도의 SQL 요청을 만드는 것을 상상할 수 있지만, 그것은 MVC 패턴과 비교 될 것 같은 느낌이 들지 만, 모두가 형성되지 않은 한 모든 이들이 뷰로 보내지는 방법에 대해 확신 할 수 없다. 모델. (그러나 나는 이것이 linq이 가질 수있는 성능 문제를 극복하는 방법이 될 것이라고 믿기 때문에이 일에 관심이있다. 그러나 내가 가질 때까지는 확장하지 않을 것이다. 나는 가져올 힘이라는 생각을 좋아한다.

어떤 도움이 크게 감사합니다, 또는 될 날이 지점에서 집에서 더 느낄 수있는 튜토리얼에 대한 제안.

사전에 감사합니다. 여기

내가에서 사용하기 위해 노력하고있어 일부 모델 코드 순간, 괴상한 저녁 식사 조건에서

public IQueryable<Dinner> GetAllUserDinnersAndRSVP(string userId) 
    { 
     return from dinner in db.Dinners 
       where dinner.userId == userId 

       join rsvp in db.Dinners 
       on userId equals rsvp.userId 
       select dinner; 
    } 

하지만이 모델의 모든 항목을보기에 표시하면 rsvp 레코드를 통해 반복 할 수 없습니다.

도움이되는지 아닌지 잘 모르겠습니다.

+1

그냥 지우기 : MVC 패턴은 데이터 액세스를 다루지 않습니다. UI 패턴입니다. 그럼에도 불구하고 질문은 유효합니다. –

답변

0

난 그냥 주문 테이블 (1row) 및 주문 항목 테이블 (많은 행)이 있었고 1 view - invoice를 보여주고 싶었던이 문제를 해결했습니다! actionResults 테스트 (문자열 quoteid)

ViewData["quoteid"] = quoteid; 

     var model = new QuoteViewModel 
     { 
      quoteInfo = new_online_quote.SingleOrDefault(x => x.quoteid == Convert.ToInt32(quoteid)), 
      quoteItems = new_quote_item.Find(x => x.quote_id == Convert.ToInt32(quoteid)) 
     }; 

     return View(model); 

그때 내가 controllerClass의 외부하지만 같은 페이지

public class QuoteViewModel 
{ 
    public new_online_quote quoteInfo { get; set; } 
    public IEnumerable<new_quote_item> quoteItems { get; set; } 
} 

에 새로운 클래스를 가지고있는

코드 : 여기

은 예입니다 quoteItems는 내가 등에서 옮길 항목 목록이므로 IENumerable입니다.

실제 페이지에 방금 만든 일반보기, 강하게 입력 된 있지만 할 수 있습니다.페이지 상단

난이이

Inherits="System.Web.Mvc.ViewPage<namespace.Controllers.QuoteViewModel>" 

이 내 클래스 상속

지금 난과 같이 두 클래스 및 데이터에 액세스 할 수 있습니다 :

Total Quote Cost <%=String.Format("{0:C}",Model.quoteInfo.totalcost) %> inc VAT @ 15%<br /> 

항목 :

다시 한 번 각 quoteItems에 대해 각각을 사용할 수 있고 모든 레코드를 함께 얻을 수 있습니다.

MVC와이 종류의 코딩에 매우 새로운 것이지만, 위의 내용은이 포럼에서 도움을 얻었으므로 다시 사용할 수 있습니다.

+0

멋진, 고마워! 그것은 손으로 모델을 만들 필요가있는 장소에 확실히 자리 잡고 있습니다. –

+0

이것이 도움이된다면 이것을 답변으로 표시 할 수 있습니까? 감사합니다. – davethecoder

관련 문제