На основании ваших комментариев я понимаю, что вы хотите сохранить переданный объект, но вы не хотите сохранять его внутреннее свойство, поскольку оно нарушает некоторые ограничения БД.
Я бы попытался отсоединить эти свойства от EF отслеживание перед сохранением, поэтому classroom.LevelGroup
не помечается как Added
. Вы можете увидеть этот пример. Вы также можете контролировать, какие объекты EF отслеживает для изменений, устанавливая правильное состояние для каждого отдельного свойства, которое было добавлено в контекст EF ( документы ).
Вы также хотите прочитать this , который почти описывает то, что вы ищете:
var existingBlog = new Blog { BlogId = 1, Name = "ADO.NET Blog" };
using (var context = new BloggingContext())
{
context.Blogs.Attach(existingBlog);
context.Entry(existingBlog).State = EntityState.Unchanged;
// Do some more work...
context.SaveChanges();
}
, но вместо того, чтобы прикрепить объект, вы хотите добавить его, а затем установить одно из его свойств как EntityState.Detached
, чтобы полностью его игнорировать (или EntityState.Unchanged
чтобы отслеживать его, но скажите EF, что здесь нечего сохранять). Нечто похожее на это:
...
_context.Add(classroom);
_context.Entry(classroom.LevelGroup).State = EntityState.Detached;
await _context.SaveChangesAsync();
...
В тот момент, когда вы добавляете объект, EF "отслеживает заданную сущность и любые другие достижимые сущности", и вы можете "использовать State для установки состояния только одной сущности ", как показано.