簡體   English   中英

.net核心EF核心多對多插入

[英].net core EF core Many to many insert

public class Article
{
    [Key]
    public int Id { get; set; }
    [Required]
    public string Title { get; set; }
    [Required]
    public string Lead { get; set; }
    [Required]
    public string Content { get; set; }
    [Required]
    public bool IsPublished { get; set; }

    public int CategoryId { get; set; }
    public Category Category { get; set; }
    public IList<ArticleTags> ArticleTags { get; set; }
}

public class Tag
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }

    public IList<ArticleTags> ArticleTags { get; set; }
}


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

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

為什么其余的請求不起作用?

{
    "Title":"tit",
    "Lead":"lead",
    "Content":"c ",
    "IsPublished":false,
    "Category":{
        "Name":"Cat"
    },
    "ArticleTags":[
        {
            "Name":"tag1"
        },
        {
            "Name":"tag2"
        }   
    ]

}

得到這個錯誤

實體類型ArticleTags上的屬性ArticleId具有一個臨時值。 顯式設置一個永久值,或者確保將數據庫配置為為此屬性生成值。

理想情況下,我希望我的休息請求看起來像這樣

{
    "Title":"tit",
    "Lead":"lead",
    "Content":"c ",
    "IsPublished":false,
    "Category":{
        "Name":"Cat"
    },
    "ArticleTags":[
        1,2,3,4,5   
    ]

}

我可以在其中放置已經存在的標簽的ID,那么我該如何寫多對多關系呢?

我是否應該更改方法並創建ArticleRest類,僅獲取標簽ID列表,然后手動將其插入我的ArticleTags表中?

需要考慮的是EF Core不支持“多對多”關系,因此您似乎需要一個聯接表。

因此,另一件事是您可能尚未設置從Article到ArticleTags的外鍵關系

該腳本應如下所示:

CREATE TABLE [dbo].[ArticleTags] (
[ArticleTagId] INT IDENTITY(1,1) NOT NULL,
[ArticleId]    INT NOT NULL,
[TagId]        INT NOT NULL,
CONSTRAINT [PK_ArticleTags_ArticleTagId] PRIMARY KEY CLUSTERED ([ArticleTagId] ASC),
CONSTRAINT [FK_Article_ArticleId_ArticleTags_ArticleId] FOREIGN KEY ([ArticleId]) REFERENCES [dbo].[Article] ([ArticleId]),
CONSTRAINT [FK_Tag_TagId_ArticleTags_TagId] FOREIGN KEY ([TagId]) REFERENCES [dbo].[Tag] ([TagId]),
)

應該解決問題。

如果不這樣做,應該會有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM