2010-09-09 76 views
0

我想在實體框架中實現下面提到的問題。實體框架:實現非常簡單的關聯場景

我有2個表(以下是他們的精簡版本)

項目表

itemId,itemName 

標籤表

tagId,tagName 
  • 我的邏輯是,一個項目可以有多個一個標籤和一個標籤可以有多個相關的項目,所以我添加了許多關係(請cor直接在這裏,如果我錯了)

  • 我已經創建了模型(edmx文件)和數據庫。

  • 我已經編寫了用於將數據添加到我的示例表中的代碼,並且其工作正常。下面是樣本數據

    itemId itemName ---items table 
        1 | fish 
        2 | cell phone 
    
    tagId tagName ------tags table 
        1 | eatable 
        2 | electronics 
        3 | non veg 
    

我需要知道如何寫這3個查詢

  1. 標籤和項目之間添加關係如添加標籤「果蔬粥」,「nonveg」項「魚」
  2. 獲得相關項目的所有標籤(如:魚)
  3. 讓不相關的一個項目的所有標籤(例如:魚)
+0

「食用」 確實應該 「可食用」用適當的英語。 – 2010-09-09 21:02:31

回答

1

如果你的公會與正常命名的地方(在你的問題的EDMX圖將幫助)...

Q 1

Tag tag = ... // probably load from database or create if necessary 
Item item = ... 
item.Tags.Add(tag); 

Q 2.

var tags = item.Tags; 

Q 3.A所有標籤不相關的任何物品

var unrelatedTags = context.Tags.Where(tag => tag.Items.Count() > 0); 

Q 3.B沒有涉及到具體的項目所有標籤

var unrelatedTags = context.Tags.Except(item.Tags); 
+0

查詢2沒有工作,在查詢3(即無關標籤):iam尋找與特定項目無關的標籤。例如:在「魚」的情況下,我希望它返回「電子」作爲與魚無關的所有標籤中的唯一標籤 – 2010-09-10 12:49:22

+0

爲特定項目添加3b。那麼第二季度沒有什麼工作?如果Q2不適合​​你,Q1如何運作?他們使用相同的.Tags屬性。 – 2010-09-10 19:18:30

+0

在q2 iam中尋找所有與物品相關的標籤。在魚的情況下,它應該返回可食用和非蔬菜。我找到了方法:item.Tags是OKIE,但是在寫入項目的查詢時,我們必須標記如下:: var item = _context.items.include(「tags」)。first(i => i.name =「fish 「),現在item.tags,是正確的。我仍然在尋找第三個查詢。 – 2010-09-10 21:46:12