SubSonic Первичный ключ с несколькими столбцами - PullRequest
2 голосов
/ 19 мая 2009

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

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

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

Ответы [ 2 ]

2 голосов
/ 19 мая 2009

Вы можете расширить свой класс Product, чтобы иметь метод, который использует Select, чтобы найти 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 голос
/ 19 мая 2009

Вам нужно будет получить его с помощью Query или SqlQuery (SubSonic.Select). Вы можете добавить метод в частичный класс объекта, к которому вы добавляете эту функцию, чтобы инкапсулировать детали выполнения операции.

...