Net Core中的“多对多”关系

时间:2018-07-17 10:54:28

标签: asp.net-core asp.net-core-2.0

public class Article
{
    public int ArticleId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }
    public DateTime ArticleAddedTime { get; set; }

    public List<ArticleTag> Tags { get; set; }
}

public class ArticleDto
{
    public int ArticleId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public List<TagDto> Tags { get; set; }
}

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

    public List<ArticleTag> Articles { get; set; }
}

public class TagDto
{
    public int TagId { get; set; }
    public string Name { get; set; }

    public List<ArticleDto> Articles { get; set; }
}

public class ArticleTag
{
    public int ArticleId { get; set; }
    public Article Article { get; set; }

    public int TagId { get; set; }
    public Tag Tag { get; set; }
}

在DataContext中:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<ArticleTag>()
        .HasKey(c => new { c.ArticleId, c.TagId });

    modelBuilder.Entity<ArticleTag>()
        .HasOne(x => x.Article)
        .WithMany(z => z.Tags)
        .HasForeignKey(y => y.ArticleId);

    modelBuilder.Entity<ArticleTag>()
        .HasOne(x => x.Tag)
        .WithMany(z => z.Articles)
        .HasForeignKey(y => y.TagId);
}

创建包含多个标签的文章时,Json应该是什么样?

我应该传递诸如[1, 2]之类的标签列表还是整个标签对象?

如果我传递一个空列表,那只是空的,但是如果我输入一些东西,那是一个错误,但是它不能告诉我什么。

也许有人为与完整Servise和Controller之间的这种关系建立了一个很好的例子(在输入和输出json文件中也会显示有用的信息)?我在网上找到的所有内容都可以概括地说。

0 个答案:

没有答案