gpt4 book ai didi

c# - 当我没有该类型的 DbSet 时,如何删除该实体?

转载 作者:行者123 更新时间:2023-11-30 20:48:20 24 4
gpt4 key购买 nike

我正在使用 DbContext已提供,我无法更改。

为简洁起见,上下文包含两种类型

public class LogPost {
public int ID { get; set; }
public string Comment { get; set; }
public virtual ICollection<LogReply> Replies { get; set; }

public LogPost() {
Replies = new List<LogReply>();
}
}

public class LogReply {
public int ID { get; set; }
public string Comment { get; set; }
}

没有DbSet<LogReply>工作,只有一个 DbSet<LogPost> .如果我尝试从 post.Replies 中删除回复集合,它会抛出一个关于外键属性不为 null 的异常(如预期的那样)。

如何删除回复?

最佳答案

我知道您无法更改现有的 DbContext实现,但是创建 DbSet<T> 的方法对于 DbContext是公开的(参见 here )。

所以你可以尝试以下方法:

using(var db = new Context())
{
var post = db.LogPosts.First(p => p.ID == postID);
var reply = post.Replies.First(r => r.ID == replyID);

var logReplies = db.Set<LogReply>();
logReplies.Remove(reply);

db.SaveChanges();
}

关于c# - 当我没有该类型的 DbSet 时,如何删除该实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24756577/

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