В моем ASP.NET Core 1.1, EF-Core 1.1 app я отображаю данные в parent view с partial view. Сценарий аналогичен следующему: отношение один к одному между Customers and Orders table и между Customers and Address table. Пользователь выбирает клиента из раскрывающегося списка в родительском представлении, которое имеет частичное представление, в котором отображаются соответствующие заказы для выбранного покупателя. Следующий контроллер правильно отправляет данные заказа клиента на просмотр. Но если я заменим сущность заказа на адресную сущность, модель, переданная в частичное представление, всегда будет нулевой.

Вопрос . Чего мне здесь не хватает?

Примечание . Размещая точки останова, я убедился, что контроллер ниже правильно отправляет запись выбранного клиента в родительское представление, а также в Db проверил, что у этого клиента есть соответствующие записи адресов в адресах. стол. Другое наблюдение состоит в том, что даже если я удаляю FK-relationship между сущностями customer и order и address через консоль Visual Studio, а затем воссоздаю эти отношения, проблема остается той же - т.е. это работает плавно для order, но не для address сущности. Я также проверил в Db, что FK-relationship правильно создан для обеих таблиц.

< Сильный > Родитель :

public class Customer
{
    [Key]
    public int CustomerId{ get; set; }
    public string Name { get; set; }
    ....
    ....
    public Order order { get; set; }
    public Address address { get; set; }
}

Один ребенок .

public class Order
{
    [Key]
    public int OrderId{ get; set; }
    public float Price { get; set; }
    ....
    ....
    public int? CustomerId { get; set; }
    public Customer customer{ get; set; }
}

Другой ребенок .

public class Adress
{
    [Key]
    public int AdressId{ get; set; }
    public string street { get; set; }
    ....
    ....
    public int? CustomerId { get; set; }
    public Customer customer{ get; set; }
}

< Сильный > контроллер :

....
....
Customer mycustomer = _context.Customer.Include(c => c.order).Where(c=> c.CustomerId== selectedId).SingleOrDefault();
....
....
return View(mycustomer);

Родительский вид .

@model MyProj.Models.Customer

....
@Html.Partial("Partial_orders", Model.order)
....

Частичное представление .

@model MyProj.Models.Order

....
<div>@Model.CustomerId<div>
....
0
nam 28 Май 2017 в 19:41

2 ответа

Лучший ответ

Это было мое плохо. В случае адреса, кто-то позже отключил FK-отношение, и таблица адресов была осиротевшей. Спасибо тем, кто, возможно, пытался помочь.

0
nam 28 Май 2017 в 20:51

Я думаю, что проблема в том, что в вашем контроллере вы забыли указать адрес при получении клиента.

Так что переходите от

Customer mycustomer = _context.Customer
    .Include(c => c.order)
    .Where(c => c.CustomerId == selectedId)
    .SingleOrDefault();

< Сильный > до

Customer mycustomer = _context.Customer
    .Include(c => c.order)
    .Include(c => c.address)
    .Where(c => c.CustomerId == selectedId)
    .SingleOrDefault();
0
kimbaudi 28 Май 2017 в 17:03