实体框架中的多对多关系

时间:2017-04-26 10:22:52

标签: asp.net asp.net-mvc entity-framework many-to-many

我遇到了多对多关系的问题。

我有3个模型类:

  1. 文章 - >>>项目
  2. 关键字 - >>>关键字
  3. 文章和关键字之间的TableForRelation - >>> ItemKeywords
  4. 使用Entity Framework Core,我编写了这3个类,它们工作正常

    public class Item
    {
          public int Id { get; set; }
          public string Content { get; set; }
    
          public virtual ICollection<ItemKeyWords> ItemKeyWords { get; set; }
    }
    
    public class KeyWord
    {
           public int Id { get; set }
           public string Text { get; set; }
    
           public virtual  ICollection<ItemKeyWords> ItemKeyWords { get; set; }
    }
    
    public class ItemKeyWords
    {
            public int Id { get; set; }
    
            public int ItemId { get; set; }
            public virtual Item Item { get; set; }
    
            public int KeyWordId { get; set; }
            public virtual KeyWord KeyWord { get; set; }
    }
    

    问题是:如果Keyword存在,我怎么能告诉实体框架不要将它放在关键字表中,只是在ItemKeywords表中创建一个关系。

    database uml

1 个答案:

答案 0 :(得分:0)

在向KeyWord添加Item.ItemKeyWords之前,您必须尝试从context.Set<KeyWord>()加载它。

如果加载结果为null,则实际执行。

如果load!= null,则添加加载的值。