2016-09-10 4 views
0

У меня есть 2 классов, связанных в моей модели:Извлечение данных из нескольких таблиц в ASP.NET MVC с помощью Entity Framework и хранилища шаблон

public class Product 
{ 
     public Product() 
     { 
      this.Additives = new HashSet<Additive>(); 
     } 

     public int Id { get; set; } 
     public string Name { get; set; } // refrigerante 
     public string CommercialName { get; set; } // nome popular, ex: fanta laranja 
     public string Brand { get; set; } // marca, ex: Coca-cola 
     public string Details { get; set; } // composicao, ingredientes 
     public HalalState HalalState { get; set; } // estado: halal, haram ou desconhecido 
     public DateTime? LastUpdate { get; set; } // date e hora do registo 

     public ICollection<Additive> Additives { get; set; } // aditivos 
     public int ProviderID { get; set; } 
} 

и

общественного класса Provider { общественного Provider () { this.Products = new HashSet(); }

public int ProviderId { get; set; } 
    public string OfficialName { get; set; } // nome usado no licenciamento 
    public string PopularName { get; set; } // nome popular, mais conhecido 
    public int Nuit { get; set; } //identificacao tributaria 
    public EstablishmentCategory EstablishmentCategory { get; set; } // tipo de estabelecimento 
    public HalalState HalalState { get; set; } 
    public DateTime? LastUpdate { get; set; } // date e hora do registo 

    public ICollection<Product> Products { get; set; } // lista de produtos halal    
} 

Я пытаюсь загрузить продукты наряду с его именем поставщика для отображения на странице с помощью Razor двигателя. Что-то вроде:

Product Name (from table A) | Provider Name (from table B) 
Soft drink     | Coca-Cola 
Chips      | Lays 

Метод для получения продуктов в классе ProductsRepository:

public ICollection<Product> ReadAll() 
{  
    return context.Products.ToList(); 
} 

мне нужен способ, чтобы перейти к OfficialName свойству Provider класса, для того, чтобы отобразить его вместе с другим свойствам Product в представлении.

ответ

1

Вам следует добавить навигационное свойство типа Provider к вашему классу Product.

public class Product 
{ 
    // Your existing properties goes here 

    public int ProviderID { get; set; } 
    public Provider Provider { set;get;} 
} 

Теперь вы можете передать список продуктов с точки зрения и использовать свойство продукта, когда вы Переберите то в представлении

public ActionResult Items() 
{ 
    var data = yourDbContext.Products.ToList(); 
    return View(data); 
} 

Теперь, по мнению

@model IEnumerable<Product> 
<table> 
    <tr> 
     <th>Name</th> 
     <th>Provider</th> 
    </tr> 
    @foreach(var item in Model) 
    { 
    <tr><td>@item.Name</td><td>@item.Provider.OfficialName</td></tr> 
    } 
</table>