2009-05-19 14 views
2

主キーを作成する複数の列がある特定のテーブルがあります。 SubSonicが複数の列を持つテーブルのすべてのクラスを生成する場合、FetchByIDのようにプライマリキーに1つの値しか使用しないメソッドがあります。SubSonic複数の列の主キー

このため、外部キーのプロパティは間違った項目を返します。たとえば、複数の列の主キーを持つ製品表があります。商品テーブルとの関係を持つクラスは、Product.FetchByID(this.SalesOrganisationID)のようなgetメソッドを持つ商品プロパティを持ちます。これはProduct.FetchByID(this.SalesOrganisationID、this.ProductID)である必要があります。

私はこれらの種類の主キーでSubSonicを動作させるために何をすべきかアドバイスしていますか?

答えて

2

あなたは、それは例えば、複合IDだことにより、製品を見つけるために、選択を使用する方法を持っているあなたのProductクラスを拡張することができます:

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

QueryまたはSqlQuery(SubSonic.Select)を使用して取得する必要があります。この機能を追加するオブジェクトの部分クラスにメソッドを追加して、操作の詳細をカプセル化することができます。

+0

はい、これは私が何をすべきかです。 –

+0

メソッドを定義することができます。public SomeBusinessObject [] FetchByIDs(params String [] keys){...} –

関連する問題