2010-12-02 5 views
0

Sagen Sie bitte die folgenden verwandten Tabellen (Stores -> Categories -> Products)WCF RIA Services/Linq to SQL: include Eigentum von fremden Tabellen

  • Stores
  • Kategorien
  • Produkte

Und Ich möchte ein Raster erstellen, um Products zu bearbeiten. Dies ist mit RIA Services einfach. Aber was, wenn ich auch StoreName von Stores und CategoryName von Categories in meiner Products Liste anzeigen möchte? Die zwei zusätzlichen Spalten sollten nur gelesen werden.

Wie kann dies implementiert werden?

Update: Ich versuche, dies in seiner einfachsten Form zu tun. Das ist kein ViewModel, nur drag'n drop, Code (falls vorhanden) wird in Codebehind gehen. Ich verwende Ling2Sql und gebe die Standardimplementierung für die GetProducts-Abfrage zurück.

Grüße

Larsi

Antwort

0

Wie beurteilen Sie diese eingerichtet haben? Sind Sie mit einem ViewModel verbunden oder verwenden Sie einfach den Code dahinter? Sendet der Web-Service eine Liste von Produkt-LINQ-Objekten zurück oder machen Sie etwas anderes?

Es gibt eine Vielzahl von Optionen, aber es hängt wirklich davon ab, was Sie versuchen zu tun.

+0

Sorry, ein wenig unklar. Ich habe einige zusätzliche Informationen hinzugefügt – Larsi

0

Die einfachste Möglichkeit besteht darin, Ihre Metadatendatei für die Produkte mit Anmerkungen zu versehen und das Raster die Spalten für Sie generieren zu lassen.

Zum Beispiel Ihre Tabellen wird wahrscheinlich so etwas wie folgt aussehen:

Product 
    int Id; 
    string ProductName; 
    int CategoryId; 

Category 
    int Id; 
    string CategoryName; 
    int StoreId; 

Store 
    int Id; 
    string StoreName; 

Nun, wenn Sie Ihren Dienst erstellen, können Sie die drei Tabellen/Einheiten aus Ihrem Domänenmodell enthalten und haben sie die Metadatendatei erzeugen für dich. In dieser Datei, mit Anmerkungen versehen, die Objekte korrekt wie folgt:

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; } 
} 

Sie können auf Ihre anderen Objekte Metadaten das gleiche tun.

Die einzige andere Sache, die Sie vielleicht tun müssen, ist auf Ihrem Grid 2 weitere Spalten hinzufügen, und haben sie zu Product.Category.CategoryName und Product.Category.Store.StoreName Karte

+0

Hallo, Entschuldigung für die späte Antwort, aber wie weiß es eigentlich, dass es die Store-Informationen enthalten sollte, wenn ich die GetProducts aufrufen? Enthält es immer alle forrigin-Tabellen? Oder sind es einige der Metadaten, die das tun? – Larsi

+0

@Larsi: iirc, wenn Sie myProduct.Category.Store aufrufen (wobei myProduct ein Produkt ist, das über Ihre GetProducts-Methode zurückgegeben wird), laden RIA-Services die mit dem Produkt verknüpfte Kategorie und den zugehörigen Speicher. –