Как извлечь запись из более чем одной таблицы в ASP. NET Core API Controller - PullRequest
0 голосов
/ 18 марта 2020

Я хочу получить 3 таблицы из базы данных, все значения из 3 таблиц.

Этот API-интерфейс находится в Sales Controller, где я хочу получить 3 таблицы Customer, Product и Store, чтобы использовать их в форме .

Вот контекст базы данных

namespace CRUDReact.Model
{
public class DataBaseContext: DbContext
{
    public DataBaseContext(DbContextOptions<DataBaseContext> options) : base(options) { }

    public DbSet<Customer> Customer { get; set; }
    public DbSet<Sales> Sales { get; set; }
    public DbSet<Product> Product { get; set; }
    public DbSet<Store> Store { get; set; }

}
}

Вот API, который я хочу использовать для получения 3 таблиц. Этот API-интерфейс находится в контроллере продаж.

   // GET: api/AllSales
    [HttpGet]
    public async Task<ActionResult<IEnumerable<Object>>> GetAllSales()
    {
        var salesdata = await _context.Sales
                 .Include(s => s.Customer)
                 .Include(s => s.Product)
                 .Include(s => s.Store)
                 .Select(s => new
                 {
                     salesId = s.SalesId,
                     dateSold = s.DateSold,
                     customer = new
                     {
                         customerId = s.CustomerRefId,
                         name = s.Customer.Name,
                         address = s.Customer.Address
                     },
                     product = new
                     {
                         productId = s.ProductRefId,
                         name = s.Product.Name,
                         price = s.Product.Price
                     },
                     store = new
                     {
                         storeId = s.StoreRefId,
                         name = s.Store.Name,
                         address = s.Store.Address
                     }
                 })
                 .ToListAsync();
        return salesdata;
    }

Вот класс продаж

namespace CRUDReact.Models
{
public class Sales
{
    [Key]
    public int SalesId { get; set; }

    public int ProductRefId { get; set; }
    [ForeignKey("ProductRefId")]
    public Product Product { get; set; }

    public int CustomerRefId { get; set; }
    [ForeignKey("CustomerRefId")]
    public Customer Customer { get; set; }

    public int StoreRefId { get; set; }
    [ForeignKey("StoreRefId")]
    public Store Store { get; set; }

    [DataType(DataType.Date)]
    public string DateSold { get; set; }
}
}

1 Ответ

0 голосов
/ 20 апреля 2020

Извлечение продаж с помощью Включить приведет к получению данных из дочерних таблиц. Почему ты это проецируешь?

var salesdata = await _context.Sales
             .Include(s => s.Customer)
             .Include(s => s.Product)
             .Include(s => s.Store).ToListAsync();

Также обычно в продаже есть Магазин, Клиент и Список продуктов, вы уверены, что ваша модель верна.

...