我试图让我的.NET API变得更聪明。当我从API获取数据时,我必须为每个结果进行API调用。目前,我有四个终点:
[HttpGet("/api/GetCustomer/{customerNumber}")]
public async Task<IEnumerable<Customer>> GetCustomer(string customerNumber)
{
var custNum = new SqlParameter("@custNum", customerNumber);
return await context.Customer.FromSql("EXEC sp_GetCustomer @custNum", custNum).ToArrayAsync();
}
[HttpGet("/api/GetCustomerTransactions/{customerNumber}/{startDate}/{endDate}")]
public async Task<IEnumerable<CustomerTransaction>> GetCustomerTransactions(string customerNumber, DateTime startDate, DateTime endDate)
{
var custNum = new SqlParameter("@custNum", customerNumber);
var dateFrom = new SqlParameter("@dateFrom", startDate);
var dateTo = new SqlParameter("@dateTo", endDate);
return await context.CustomerTransactions.FromSql("EXEC sp_GetCustomerTransactions @custNum, @dateFrom, @dateTo", custNum, dateFrom, dateTo)
.AsNoTracking()
.ToArrayAsync();
}
[HttpGet("/api/GetCustomerTransactionDetails/{customerNumber}/{storeNumber}/{transactionNumber}")]
public async Task<IEnumerable<CustomerTransactionDetail>> GetCustomerTransactionDetails(string customerNumber, string storeNumber, string transactionNumber)
{
var custNum = new SqlParameter("@custNum", customerNumber);
var storeNum = new SqlParameter("@storeNum", storeNumber);
var transNum = new SqlParameter("@transNum", transactionNumber);
return await context.TransactionDetails.FromSql("EXEC sp_GetCustomerTransactionDetails @custNum, @storeNum, @transNum", custNum, storeNum, transNum)
.AsNoTracking()
.ToArrayAsync();
}
[HttpGet("/api/GetProduct/{productSku}/")]
public async Task<IEnumerable<Product>> GetProduct(string productSku)
{
var sku = new SqlParameter("@sku", productSku);
return await context.Product.FromSql("EXEC sp_GetProduct @sku", sku)
.AsNoTracking()
.ToArrayAsync();
}
我有一对多的关系。 CustomerTransactions&gt; CustomerTransactionDetails&gt;产品。我认为解决方案是为每个类添加一个集合,但我不知道如何填充它,因为结果是在另一个SQL过程中。
public class CustomerTransaction
{
[Key] public string KwiNumber { get; set; }
public int StoreNumber { get; set; }
public int TransactionNumber { get; set; }
public DateTime TransactionDate { get; set; }
public TimeSpan TransactionTime { get; set; }
public ICollection<CustomerTransactionDetail> CustomerTransactionDetails { get; set; }
public CustomerTransaction()
{
CustomerTransactionDetails = new Collection<CustomerTransactionDetail>();
}
}