#asp.net-mvc #entity-framework-6
#asp.net-mvc #entity-framework-6
Вопрос:
Контроллер:
public ActionResult Index()
{
var Cs = new List<Customer>();
using (JoinEntities db = new JoinEntities())
{
Cs = (from p in db.Customers
join e in db.Orders on p.ID equals e.Customer_id
where p.Name == "Rama"
select p).ToList();
}
return View(Cs);
}
Вид:
@model IEnumerable<JOIN.Models.Customer>
@{
ViewBag.Title = "Home Page";
}
<table class="table table-condensed table-hover">
<thead>
<tr>
<td>First Name</td>
<td>salary</td>
<td>age</td>
<td>amount</td>
</tr>
</thead>
<tbody>
@foreach (var per in Model)
{
<tr>
<td>@per.ID</td>
<td>@per.Name</td>
<td>@per.Age</td>
<td>@per.Amount</td>
</tr>
}
</tbody>
</table>
В приведенном выше представлении кода требуется только один столбец таблицы, как я могу получить другие столбцы таблицы в таблице customer идентификатор является первичным ключом, а таблица заказов customer_id
— внешним ключом
customer
таблица: столбцы id, имя, возраст, зарплатаorder
таблица: столбцы oid, date, customer_id, amount
Комментарии:
1. Вы можете создать класс viewmodel со свойством таблицы customer и order и можете использовать эту модель представления в предложении select
Ответ №1:
Создайте другую модель представления, как показано ниже
public class CustomerOrderViewModel
{
public int CustomerId { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public double Salary { get; set; }
public int OrderId { get; set; }
public DateTime Date { get; set; }
public double Amount { get; set; }
}
И обновите свой метод индексации, как показано ниже
public ActionResult Index()
{
using (JoinEntities db = new JoinEntities())
{
var customerOrderList = (from p in db.Customers
join e in db.Orders on p.ID equals e.Customer_id
where p.Name == "Rama"
select new CustomerOrderViewModel {
CustomerId = p.Id,
Name = p.Name,
Age= p.Age,
Salary = p.Salary,
OrderId= e.Id,
Date= e.Date,
Amount = e.Amount
}).ToList();
return View(customerOrderList);
}
}
И измените модель представления вашего представления на
@model IEnumerable<JOIN.Models.CustomerOrderViewModel>
Комментарии:
1. большое вам спасибо, братан, теперь в вашем коде все работает нормально, используя инструкцию u, r не добавляя список
Ответ №2:
Вам нужно создать другую модель, например
class MyModel{
public string Name{get;set;}
public DateTime Date {get;set;}
}
И изменение в запросе выбора:
var Cs = new List<MyModel>();
using (JoinEntities db = new JoinEntities())
{
Cs = (from p in db.Customers
join e in db.Orders on p.ID equals e.Customer_id
where p.Name == "Rama"
select new MyModel {
Name = p.Name,
Date = e.date
}).ToList();
}