2009-05-19 1 views
2

Wir haben bestimmte Tabellen, wo wir mehrere Spalten haben, die zusammen den Primärschlüssel bilden. Wenn SubSonic alle seine Klassen für unsere Tabellen für die Tabellen mit mehreren Spalten generiert, gibt es immer noch Methoden wie FetchByID, die nur einen Wert für den Primärschlüssel verwenden.SubSonic Multiple-Spalte Primärschlüssel

Aus diesem Grund wird die Fremdschlüsseleigenschaft die falschen Elemente zurückgeben. Zum Beispiel haben wir eine Produkttabelle mit einem Primärschlüssel aus mehreren Spalten. Eine Klasse mit einer Beziehung zur Produkttabelle hat eine Produkteigenschaft mit der get-Methode: Product.FetchByID (this.SalesOrganizationID). Dies sollte Product.FetchByID (this.SalesOrganisationID, this.ProductID) sein.

Hat jemand einen Ratschlag für mich, was ich tun sollte, um SubSonic mit diesen Primärschlüsseln arbeiten zu lassen?

Antwort

2

Sie können Ihre Produktklasse zu erweitern, ein Verfahren zu haben, die eine Select verwendet das Produkt zu finden, indem es Composite-ID ist, zum Beispiel:

public partial class Product{ 
    public static Product FetchByCompositeId(int salesOrganisationId, int productId){ 
    return DB.Select().From<Product>() 
     .Where(Product.Columns.SalesOrganisationId).IsEqualTo(salesOrganisationId) 
     .And(Product.Columns.ProductId).IsEqualTo(productId) 
     .ExecuteSingle<Product>(); 
    } 
} 
1

Sie müssen es mit Query oder SqlQuery (SubSonic.Select) erhalten. Sie können die Methode in der partiellen Klasse des Objekts, dem Sie diese Funktionalität hinzufügen, hinzufügen, um die Details zum Ausführen der Operation einzukapseln.

+0

Ja, das ist was ich tue. –

+0

Sie könnten eine Methode public definieren SomeBusinessObject [] FetchByIDs (Parameter String [] Schlüssel) {...} –