SubSonic多列主键

时间:2009-05-19 16:21:28

标签: subsonic

我们有一些表,我们有多个列,它们一起构成主键。 当SubSonic为具有多列的表生成表的所有类时,仍有一些方法,如FetchByID,只使用一个值作为主键。

因此,外键属性将返回错误的项目。例如,我们有一个产品表,其主键为多列。与product表有关系的类将具有get方法的product属性,如:Product.FetchByID(this.SalesOrganisationID)。这应该是Product.FetchByID(this.SalesOrganisationID,this.ProductID)。

有没有人对我有什么建议让我应该做些什么来让SubSonic使用这些主键?

2 个答案:

答案 0 :(得分:2)

您可以扩展Product类,使其具有使用Select来查找Product by the composite id的方法,例如:

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 :(得分:1)

您必须使用Query或SqlQuery(SubSonic.Select)来获取它。您可以在要添加此功能的Object的partial类中添加该方法,以便封装执行操作的详细信息。