我首先使用实体框架数据库。
对于一对多关系,在sql server中,我使用以下sql查询(Status_ID是外键):
SELECT Products.*, Status.Title as Pstatus
FROM Products, Status
WHERE Products.Status_ID = Status.ID
在MVC中,我使用以下代码检索与上面的sql查询相同的数据,并将列表传递给视图:
控制器:
var products = oDB.Products.Include(m => m.Status)
.ToList();
// string test = products[0].Status.Title;
return View(products);
在视图中,我可以通过以下代码访问所需数据:
查看:
@model List<myDB.Product>
...
@item.Status.Title // This works well for each item in the list
对于许多与JUNCTION TABLE的关系,这是我的.edmx:
现在我如何检索包括相关类别的产品列表? 我需要产品列表并将其作为列表传递给视图,并在视图中访问每个产品的类别。
我的类(这些类是自动生成的):
public partial class Category
{
public int ID { get; set; }
public string Title { get; set; }
public virtual ICollection<Products_Categories> Products_Categories { get; set; }
}
public partial class Products_Categories
{
public int ID { get; set; }
public Nullable<int> Product_ID { get; set; }
public Nullable<int> Category_ID { get; set; }
public virtual Category Category { get; set; }
public virtual Product Product { get; set; }
}
public partial class Product
{
public int ID { get; set; }
public string Title { get; set; }
public virtual ICollection<Products_Categories> Products_Categories { get; set; }
}
答案 0 :(得分:3)
var products = oDB.Products.Include(m => m.Product_Categories.Select(pc=>pc.Category))
.ToList();
// string test = products[0].Status.Title;
return View(products);
在视图中你可以像这样使用它
@foreach(var item in model){
<h3>string.join(", ", item.Product_Categories.Select(pc=>pc.Category.Title))</h3>
}
答案 1 :(得分:1)
您需要使用以下内容:
var products = oDB.Products.Include("Status")
.ToList();
// string test = products[0].Status.Title;
return View(products);