使用Entity Framework的逗号分隔的外键

时间:2014-07-11 10:51:12

标签: c# entity-framework ef-code-first foreign-keys

我在实体框架中使用代码优先方法。

我正在使用两个类:ItemTagItem可以有多个Tag s

public class Item
{
    public int ItemId { get; set; }
    public string Name { get; set; }
    public List<Tag> Tags { get; set; }
}

public class Tag    
{
    public int TagId { get; set; }
    public int Name { get; set; }
    public Item Item { get; set; }
}

我想将TagId放在Items表中作为逗号分隔值。

我可以使用外键关联来实现这一目标吗?如果是这样,我如何在使用数据时检索数据?或者请指定另一种方法。

1 个答案:

答案 0 :(得分:1)

您可以将其公开为未映射的属性,即:

public class Item
{
  public int ItemId { get; set; }
  public string Name { get; set; }
  public List<Tag> Tags { get; set; }
  [NotMapped]
  public string TagIds
  {
    set
    {
      if (Tags == null) return null;
      return string.Join(",", Tags.Select(t => t.TagId.ToString).ToArray());
    }
    //get
    //{
       // If you need you can implement this with string.Split and update the Tags
    //}
  }
}

我不知道你是否需要实现get。如果您这样做,可以使用string.Split()int.Parse()获取新标记ID,并在数据库中更新它们。