В одном контексте БД удалить его не составит труда. дочерний элемент из отношения 1:n, после SaveChanges() дочерний элемент также удаляется из базы данных.
Пример:
Код: Выделить всё
using (var db = new BloggingContext())
{
var blog = db.Blogs
.Include(blog => blog.Posts)
.FirstOrDefault(b => b.BlogId == blogId);
if (blog != null)
{
blog.Url += $"/changed";
if (blog.Posts.Count > 0)
{
// this one gets deleted - okay, we are in the same db context
blog.Posts.Remove(blog.Posts[0]);
}
db.SaveChanges();
}
}
Здесь я читаю данные, используя один контекст БД, меняю значения и пытаюсь сохранить измененные значения во второй БД контекст.
В реальном проекте данные считываются с помощью веб-интерфейса, а затем измененные данные передаются через JSON, поэтому нет возможности сохранить контекст БД открытым.< /p>
Код: Выделить всё
Blog? existingBlog = new();
using (var db = new BloggingContext())
{
existingBlog = db.Blogs
.Include(blog => blog.Posts)
.FirstOrDefault(b => b.BlogId == blogId);
}
// change values, add Posts and delete Posts
Blog updatedBlog = ChangeValuesOfBlogAndPosts(existingBlog!);
// here we are in a new db context
using (var db = new BloggingContext())
{
db.Blogs.Update(updatedBlog);
db.SaveChanges();
}
Я прочитал много сообщений, попробовал несколько синтаксических вариантов, нашел подсказку «Отдельный картограф», но я думаю, что это довольно простая функция, и она работает, когда я нахожусь только в одном контексте БД, поэтому боюсь, что мне просто не хватает одной мелочи, чтобы запустить ее без инструментов.Если это имеет какое-либо значение, база данных — Oracle 19.
Так что спасибо за любую помощь.
Подробнее здесь: https://stackoverflow.com/questions/791 ... ot-deleted