我们有一些表,我们有多个列,它们一起构成主键。 当SubSonic为具有多列的表生成表的所有类时,仍有一些方法,如FetchByID,只使用一个值作为主键。
因此,外键属性将返回错误的项目。例如,我们有一个产品表,其主键为多列。与product表有关系的类将具有get方法的product属性,如:Product.FetchByID(this.SalesOrganisationID)。这应该是Product.FetchByID(this.SalesOrganisationID,this.ProductID)。
有没有人对我有什么建议让我应该做些什么来让SubSonic使用这些主键?
答案 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类中添加该方法,以便封装执行操作的详细信息。