2013-11-20 4 views
1

Я работаю над своим первым проектом Breeze Angular (.NET). Я медленно добираюсь туда, но за последние 2 дня у меня возникла следующая проблема.соединительные столы в Breeze JS многие для многих. Как получить data.results

У меня есть 3 таблицы.

[Продукты] 1> м [ProductCategory] м < 1 [Categorys]

ProductCategory представляет собой таблицу Junction/Link, которая имеет ProductID и CategoryID как внешние ключи. Очень просто.

Мне нужно создать список Categorys где ProductID = 3

любая идея, как я могу сделать это с Breeze EntityQuery?

Как выглядит запрос «Бриз»? Это все, что у меня есть.

var query = breeze.EntityQuery 
.from("Categorys") 
.expand(???) 
.where("ProductCategory.ProductID", "==", 3); 

Все три таблицы правильно Рельефная Е.Г.

public class Product_Category 
{ 
    [Key] 
    public int ID { get; set; } 
    [Required] 
    public int ProductID { get; set; } 
    [Required] 
    public int CategoryID { get; set; } 
    [ForeignKey("CategoryID")] 
    public Category Categories { get; set; } 

    [ForeignKey("ProductID")] 
    public Product Products { get; set; } 

} 

Простой SQL оператор будет выглядеть следующим образом: -

 SELECT ProductCategory.ProductID, ProductCategory.CategoryID, 
    Categorys.CategoryName FROM    
         ProductCategory INNER JOIN 
           Categorys ON 
ProductCategory.SubCategoryID = Categorys.SubCategoryID 
WHERE (ProductCategory.ProductID = 3) 

Я понимаю, что это очень распространенное требование, но попробовать, как я мог бы Я не могу найти решение.

UPDATE

Благодаря Доминику здесь решение выше. В случае, если кто-то еще такой же толстый, как я.

БРИЗ

var query = breeze.EntityQuery 
.from("Products_Categories") 
.expand("Categories") 
.where("ProductID", "==", parseInt(prodid)); 

Угловая Вид:

<div data-ng-repeat="item in ProductCategory"> 
    <div data-ng-repeat="sub in item.Categories"> 
     <span ng-show="sub.CategoryName.length">{{sub.CategoryName}}</span> 
    </div> 
</div> 

ответ

2

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

var query = breeze.EntityQuery 
.from("Categorys") 
.expand(???) 
.where("ProductCategory.ProductID", "==", 3); 

Но я уверен, что вы можете сделать запрос как

var query = breeze.EntityQuery 
.from("ProductCategory") 
.expand("Categories") 
.where("ProductId", "==", 3); 

Тогда вам придется проходить через ProductCategories, а затем через категории внутри. Я не уверен на 100% синтаксиса, потому что по какой-то странной причине расширение на стороне клиента в прошлом не работало и привыкло писать. Включить в breezeController, но логика должна быть одинаковой.

+0

Это замечательный Дом! просто, как эй? Я думаю, где я потерялся, был с вложенным циклом на клиенте. Большое спасибо, это хорошо работает. – FatGit

Смежные вопросы