Я использую Microsoft.EntityFrameworkCore.Sqlite У меня рекурсивные отношения с одним и тем же классом (тег может иметь много связанных тегов), я использую подход Code First
Я видел решение по использование ..Many (..). haveMany (..) .... но HaveMany () (от многих к многим) не реализовано в ядре entityFramwork.
// my class
public class Tag
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int TagId { get; set; }
public string Name { get; set; }
public virtual List<Tag> RelatedTags { get; set; }
public Tag() { }
public Tag(string tagName)
{
RelatedTags = new List<Tag>();
this.Name = tagName;
}
}
как мне добиться этого, особенно какую конфигурацию я должен установить. заранее спасибо.
лучшее, что я нашел, - это создать что-то вроде этого:
class Tag
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int TagId { get; set; }
public string Name { get; set; }
public Tag() { RelatedTags = new List<RelatedTag>(); }
public virtual List<RelatedTag> RelatedTags { get; set; }
}
class RelatedTag
{
public int TagIdSource { get; set; }
public int TagIdRelated { get; set; }
}
// on DbContext
modelBuilder.Entity<RelatedTag>().HasKey(tg => new { tg.TagIdSource, tg.TagIdRelated });
проблема с этим решением в том, чтобы получить соответствующие теги, я должен сделать присоединиться к запросу, чтобы узнать, какие теги содержат определенные c идентификаторы.