[英].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.