如何使用angularjs从不同的表数据库中获取数据?

时间:2016-04-25 14:05:50

标签: angularjs asp.net-mvc

我正在使用ASP.NET MVC 4开发Web应用程序,我想使用AngularJS从数据库中获取数据。

我的问题是我有两个表(产品,类别),如下所示:

public partial class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string imgurl { get; set; }
    public int CategoryId { get; set; }

    public virtual Category Category { get; set; }
}

public partial class Category
{
    public Category()
    {
        this.Products = new HashSet<Product>();
    }

    public int Id { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Product> Products { get; set; }
}

我想使用产品表中的ng-repeat来迭代数据,如下所示:

Name   category
================
iphone  -  Mobiles

只有,我可以检索如下数据:

Name   category Id
================
iphone  -  1

我无法从类别表中检索类别名称。但我可以检索categoryId。

有没有办法使用ng-repeat以这种格式从数据库中获取数据。

 Name   category
  ================
 iphone  -  Mobiles

我想从他们之间的两个表中获取数据关系。

提前致谢。

2 个答案:

答案 0 :(得分:0)

请尝试如下所示(使用Eager Loading

public JsonResult getAllProducts() 
 { 
      var products = db.Products
                     .Include(p => p.Category)
                     .ToList();

      return Json(products , JsonRequestBehavior.AllowGet); 
 }

更新:您无法通过get方法检索对象集合。您必须将post与对象集合一起使用,如下所示。这只是一个示例。希望你能得到这个想法。

 public async Task<RefereeEditDto> GetRefereeForEditAsync(NullableIdInput<int> input)
        {
            var referee = await _refereeRepository.FirstOrDefaultAsync(p => p.Id == input.Id);
            var result = referee.MapTo<RefereeEditDto>();
            return result;
        }

答案 1 :(得分:0)

最后,我找到了我的问题的解决方案......如下:

查询两个表之间的连接:

 public JsonResult getAllProducts() 
    {
        var products = from pr in db.Products
                       join ct in db.Categories
                       on pr.CategoryId equals ct.Id
                       select new
                       {
                           pr.Name,
                           pr.CategoryId,
                          CatName= ct.Name
                       };
            return Json(products , JsonRequestBehavior.AllowGet); 

                    }

之后,使用ng-repeat迭代数据:

<tr ng-repeat="product in products" >
                <td>{{product.Name}}</td>
                <td>{{product.CatName}}</td>
                <td>{{product.CategoryId}}</td></tr>

现在,每件事情都运转良好,我可以获取我想要的格式的数据......感谢每个人都试图帮助我。