我正在编写一个应用程序,我们调用20多个API来使用Entity Framework在我们的数据库中添加或更新值。模型的键可以在1-6个属性之间变化。我已经编写了一个添加或更新的通用方法,以避免重复代码,但我用几个键动态调用Angular CLI: 6.0.1
Node: 8.11.1
OS: win32 x64
Angular: 6.0.1
... animations, cli, common, compiler, compiler-cli, core, forms
... http, platform-browser, platform-browser-dynamic
... platform-server, router
Package Version
------------------------------------------------------
@angular-devkit/architect 0.6.1
@angular-devkit/core 0.6.1
@angular-devkit/schematics 0.6.1
@ngtools/webpack 6.0.0
@schematics/angular 0.6.1
@schematics/update 0.6.1
rxjs 5.5.2
typescript 2.8.3
webpack 4.8.3
。如果每个模型具有相同数量的密钥,那么这将不是问题,但遗憾的是并非如此。
示例模型:
DbSet.Find()
API调用:
public class TPClassification
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public Classifications ClassificationId { get; set; }
[MaxLength(100)]
public string Description { get; set; }
public bool IsCyclical { get; set; }
[MaxLength(400)]
public string Comment { get; set; }
}
public class TPFeeCalculation
{
[Key, Column(Order = 0)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[MaxLength(15)]
public string BusinessSystemId { get; set; }
[Key, Column(Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int CaseId { get; set; }
[ForeignKey("BusinessSystemId,CaseId")]
public virtual TPCase TPCase { get; set; }
[Key, Column(Order = 2)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[MaxLength(5)]
public string Action { get; set; }
[Key, Column(Order = 3)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Cycle { get; set; }
[ForeignKey("BusinessSystemId,CaseId,Action,Cycle")]
public virtual TPRenewalCycle TPRenewalCycle { get; set; }
[Key, Column(Order = 4)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int RateNo { get; set; }
[MaxLength(100)]
public string RateDescription { get; set; }
}
AddOrUpdate方法:
public ICollection<TPFeeCalculation> GetFeeCalculation(string businessSystemId, int caseId)
{
var url = $"/api/feecalculations/{businessSystemId}/{caseId}";
var result = GetRequest<ICollection<TPFeeCalculation>>(url);
return result;
}
public ICollection<TPClassification> GetClassifications()
{
var url = $"/api/classifications/";
var result = GetRequest<ICollection<TPClassification>>(url);
return result;
}