2009-05-19 3 views
2

У нас есть определенные таблицы, в которых у нас есть несколько столбцов, которые вместе образуют первичный ключ. Когда SubSonic генерирует все его классы для наших таблиц для таблиц с несколькими столбцами, существуют еще методы, такие как FetchByID, которые используют только одно значение для первичного ключа.SubSonic Первичный ключ нескольких столбцов

Из-за этого свойство внешнего ключа вернет неправильные позиции. Например, у нас есть таблица продуктов, которая имеет первичный ключ из нескольких столбцов. Класс с отношением к таблице продуктов будет иметь свойство продукта с методом get, например: Product.FetchByID (this.SalesOrganisationID). Это должно быть Product.FetchByID (this.SalesOrganisationID, this.ProductID).

Есть ли у меня какие-либо советы по поводу того, что я должен сделать, чтобы заставить SubSonic работать с такими первичными ключами?

ответ

2

Вы можете расширить свой класс продукта, чтобы иметь метод, который использует Select, чтобы найти продукт по его композиционный идентификатор, например:

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 []) {...} –

Смежные вопросы