@authoraytee

Как вывести сложные данные в представление ASP.Net MVC5?

У меня есть таблица "Скидки", которая в себе содержит внешние ключи для заказчиков и материалов (2-х разных таблиц), а проблема в том, что я не могу вывести данные в представление

Например, страница "Платежи" имеет только ключ на заказчиков, в ней вывести получается как:
DatabaseContext db = new DatabaseContext();

public ActionResult Payments()
{
    var payments = db.Payments.Include(p => p.Customer);
    return View(payments.ToList());
}

И в представлении
@foreach (var f in Model)
{
    <tr class="content">
        <td><p>@f.Id</p></td>
        <td><p>@f.Date</p></td>
        <td><p>@f.Customer.CustomerName</p></td>
    </tr>
}


Собственно вопрос - как вывести и заказчиков, и материалы на страницу со скидками?

Контроллер
DatabaseContext db = new DatabaseContext();

public ActionResult Sales()
{ 
    //Что сюда писать?
    return View();
}


Модель
public class Sale
    {
        public int Id { get; set; }

        public int? CustomerId { get; set; }
        public Customer Customer { get; set; }
        public int? MaterialId { get; set; }
        public Material Material { get; set; }
        
        public float Changes { get; set; }
    }


Контекст
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
    public class DatabaseContext : DbContext
    {
        public DatabaseContext() : base("conn")
        { }

        //Non-inheriting
        public DbSet<Customer> Customers { get; set; }
        public DbSet<Material> Materials { get; set; }

        //Other
        public DbSet<DeliveryAddress> DeliveryAddresses { get; set; }
        public DbSet<Payment> Payments { get; set; }
        public DbSet<Sale> Sales { get; set; }
    }
  • Вопрос задан
  • 43 просмотра
Решения вопроса 1
firedragon
@firedragon Куратор тега C#
Senior .NET developer
Используйте композицию, грубо говоря выбирайте данные из одного и другого и вставляйте этиданные в модель , ведь модель страницы не обязана совпадать с моделью данных, для мэппинга используйте automapper
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Почта Банк Москва
от 200 000 до 240 000 ₽
Tiamat Games Москва
от 75 000 до 125 000 ₽