Entity Framework: реализация очень простого сценария ассоциации - PullRequest
0 голосов
/ 10 сентября 2010

Я хочу реализовать указанную ниже проблему в Entity Framework.

У меня есть 2 таблицы (ниже приведены их упрощенные версии)

таблица предметов

itemId,itemName

таблица тегов

tagId,tagName
  • моя логика в том, что элемент может иметь более одного тега, а тег может иметь более одного элемента, связанного с ним, поэтому я добавил отношение многие ко многим (пожалуйста, исправьте меня здесь, если я не прав)

  • Я создал модель (файл edmx) и базу данных из нее.

  • Я написал код для добавления данных в мои примеры таблиц, и он работает нормально. Ниже приведен пример данных

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

Мне нужно знать, как написать эти 3 запроса

  1. добавить отношение между тегом и элементом, например добавить тэги "eatables", "nonveg" к элементу "fish"
  2. получить все теги, связанные с предметом (например, рыба)
  3. получить все теги, не относящиеся к предмету (например, рыба)

1 Ответ

1 голос
/ 10 сентября 2010

Если ваша ассоциация имеет нормальное именование (диаграмма 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...