假设我们有类似下面的代码段来删除一些导航实体:
User user = DBContext.Users.SingleOrDefault(p => p.UserID == userID);
foreach (string bookId in bookIds)
{
Book book2Remove = user.Books.SingleOrDefault(bk => bk.Id == bookId);
user.Books.Remove(book2Remove);
}
DBContext.SaveChanges();
User
和Book
之间存在多对多关系,但当我想删除其Books
所在的所有相关Id
{{1} }}数组逐个删除其中一个(仅第一个)在下一个(第二个)bookIds
步骤的其他单词中,Foreach
将为空结束。
book2Remove
中确定的关系:
onModelCreating()
有人知道为什么会这样吗?
提前感谢。
答案 0 :(得分:0)
您可以尝试如下所示。
User user = DBContext.Users
.Include(b => b.Books)
.FirstOrDefault(p => p.UserID == userID);
foreach (string bookId in bookIds)
{
Book book2Remove = user.Books.FirstOrDefault(bk => bk.Id == bookId);
user.Books.Remove(book2Remove);
}
DBContext.SaveChanges();
答案 1 :(得分:0)
糟透了我的错误,可怜的Code-First :),有一个概率,传递所有ID相同 但是Ids是一个非常大的字符串(它们在一小部分是不同的)所以很难检查它们:)。
那我该怎么办 是否删除了问题?