gpt4 book ai didi

c# - 无法更改关系,因为一个或多个外键属性不可为空

转载 作者:行者123 更新时间:2023-11-30 16:17:45 27 4
gpt4 key购买 nike

我正在尝试添加一些值以及尝试从我的数据库中删除选定的值。

我使用的代码如下:

[HttpPost]
public ActionResult SavePlaylist(List<ItemEditViewModel> content, long playlistid, List<long> deleted, string Title)
{
var playlist = db.Playlists.Include("PlaylistContents").FirstOrDefault(x => x.PlaylistId == playlistid);


for (int i = 0; i < content.Count; i++)
{
var pc = new PlaylistContent();
pc.Sequence = content[i].MetaID;
playlist.PlaylistContents.Add(pc);
}
for (int i = 0; i < deleted.Count; i++)
{
long delid = deleted[i];
ar remove = playlist.PlaylistContents.FirstOrDefault(x => x.PlaylistContentId.Equals(delid));
playlist.PlaylistContents.Remove(remove);


}
db.SaveChanges();
return JSON(playlist);

}

值已成功添加,但在从中删除值时,错误显示如下:

 The relationship could not be changed because one or more of the foreign-key properties is non-nullable. When a change is made to a relationship, the related foreign-key property is set to a null value. If the foreign-key does not support null values, a new relationship must be defined, the foreign-key property must be assigned another non-null value, or the unrelated object must be deleted.

我该怎么做才能解决这个错误。业务逻辑中是否存在任何类型的错误。

最佳答案

以下代码从集合中删除对象:

playlist.PlaylistContents.Remove(remove);

但是,当您调用 SaveChanges 时,它会失败,因为 FK 列不可为空。为什么?因为 EF 没有删除该行,而是将 id 值设置为零。您需要删除该行,为此您可以这样做:

db.PlaylistContents.Remove(remove); // this line removes the row from the database
playlist.PlaylistContents.Remove(remove); // this line removes the object form the collection
db.SaveChanges();

关于c# - 无法更改关系,因为一个或多个外键属性不可为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16806715/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com