Abbiamo una tabella delle transazioni del cliente con molte relazioni con le chiavi esterne.
Vogliamo solo vedere alcune colonne delle 3 tabelle unite in un'interfaccia web.
Ad esempio, Date, PurchaseAmount, ProductName e StatusDescription.
Ho sentito che il repository non dovrebbe selezionare certe colonne, dovrebbe selezionare Tutte le colonne. Quindi non dovremmo usare il repository di seguito. Se si leggono tutte le colonne o troppe tabelle correlate, la query sql può rallentare con dati non ottimizzati.
Come dovrei denominare questo nuovo metodo di accesso ai dati?
Inoltre, dovrei creare una cartella personale per questo, ho già una cartella del repository., dovrei creare un'altra cartella per WebRepository?
CustomerTransactionWebRepository anziché CustomerTransactionRepository?
Repository:
public class CustomerTransactionRepository: ICustomerTransactionRepository{
public CustomerTransaction GetCustomerTransaction(int CustomerTransactionId )
{
var result = context.CustomerTransaction.Where(c=>c.CustomerTransactionId == id)
.Include(p=>p.ProductType)
.Include(s=>s.StatusType);
}
public class CustomerTransactionWebServiceRepository: IWebServiceRepository
{
public CustomerTransaction GetCustomerTransaction(int CustomerTransactionId )
{
var result = context.CustomerTransaction.Where(c=>c.CustomerTransactionId == id)
.Include(p=>p.ProductType)
.Include(s=>s.StatusType);
.Select(p => new {
DateOfPurchase= c.DateOfPurchase,
PurchaseAmount= c.PurchaseAmount,
ProductName= p.ProductName
StatusDescription = s.StatusDescription
}
Esempio di modello:
public class CustomerTransaction
{
public int CustomerTransactionId { get; set; }
public string DateOfPurchase{ get; set; }
public int PurchaseAmount { get; set; }
// relationships
public ProductType ProductType { get; set; }
public int ProductTypeId { get; set; }
public StatusType StatusType { get; set; }
public int StatusID { get; set; }
}