2010-12-02 1 views
0

는 다음과 같은 관련 테이블이 (Stores -> Categories -> Products)WCF RIA 서비스/Linq에 - 투 - SQL :

  • 저장
  • 카테고리
  • 제품

  • 그리고 말 외국 테이블에서 속성을 포함 Products을 편집하기위한 표를 만들고 싶습니다. 이는 RIA 서비스에서 간단합니다. 하지만 StoreNameStoresCategoryName에서 Categories에 내 Products 목록으로 표시하려면 어떻게해야하나요? 두 개의 추가 열은 읽기 전용이어야합니다.

    어떻게 구현할 수 있습니까?

    업데이트 : 가장 간단한 방법으로 시도하고 있습니다. 그것은 ViewModel이 아니며 드래그 앤 드롭 만 가능합니다. 코드가 있으면 코드 숨김으로 이동합니다. Ling2Sql을 사용하고 GetProducts 쿼리의 기본 구현을 반환합니다.

    감사

    이 사용자가 설정 한 어떻게

    Larsi

  • 답변

    0

    ? ViewModel에 바인딩하거나 코드 숨김을 사용하고 있습니까? 웹 서비스가 제품 LINQ 개체 목록을 다시 보내고 있습니까? 아니면 다른 작업을 수행하고 있습니까?

    다양한 옵션이 있지만 실제로 수행하려는 작업에 따라 다릅니다.

    +0

    죄송합니다, 분명 조금에 매핑해야합니다. 일부 추가 정보를 추가했습니다. – Larsi

    0

    가장 간단한 방법은 제품에 대한 메타 데이터 파일에 주석을 달고 그리드에서 열을 생성하도록하는 것입니다.

    예를 들어, 테이블이 아마 다음과 같이 보일 것입니다 : 당신이 당신의 서비스를 만들 때

    이제
    Product 
        int Id; 
        string ProductName; 
        int CategoryId; 
    
    Category 
        int Id; 
        string CategoryName; 
        int StoreId; 
    
    Store 
        int Id; 
        string StoreName; 
    

    , 당신은 3 개 개의 테이블을 포함 할 수 있습니다/당신의 도메인 모델에서 엔티티와 가지고는 메타 데이터 파일을 생성 너를 위해서. 이 파일에 다음과 같이 정확하게 주석 달기하십시오.

    internal sealed class ProductMetadata 
    { 
        [Key] 
        [Bindable(false)] 
        [Display(AutogenerateField=false)] 
        public int Id { get; set; } 
    
        [Bindable(true, BindingDirection.TwoWay)] 
        [Display(Name="Product")] 
        [StringLength(20, MinimumLength=3)] 
        public string ProductName { get; set; } 
    
        [Bindable(false)] 
        [Display(AuteogenerateField=false)] 
        public Category Category { get; set; } 
    
        [Required] 
        [Bindable(false)] 
        [Display(AutogenerateField=false)] 
        public CategoryId { get; set; } 
    } 
    

    다른 개체의 메타 데이터에도 동일하게 적용 할 수 있습니다.

    당신이해야 할 수있는 유일한 다른 것은 당신의 그리드에 다른 2 열을 추가하고, 그들을 Product.Category.CategoryName 및 Product.Category.Store.StoreName

    +0

    안녕하십니까, 늦게 대응 해 드려 죄송합니다. 실제로 GetProducts를 호출하면 Store 정보가 포함되어야한다는 것을 어떻게 알 수 있습니까? 항상 모든 forrigin 테이블을 포함합니까? 아니면 메타 데이터의 일부입니까? – Larsi

    +0

    @Larsi : iirc, myProduct.Category.Store (여기서 myProduct는 GetProducts 메서드를 통해 반환 된 제품 임)를 호출하면 RIA 서비스가 제품과 관련된 범주 및 저장소를 지연로드합니다. –