我有一个名为' target'实体框架通过集合地址进行检索。
删除所有不在另一个集合中的项目后,我将保存我的实体框架上下文。
但是,在检查我的数据库时,记录仍然存在。虽然我的linq代码确保从集合中删除项目。
这是我的linq代码:
using (IUnitOfWork uow = _uow.CreateUnitOfWork())
{
var target = _repository.GetByBron(uow, bron.BronId);
target.Adressen.RemoveAll(x => source.Adressen.All(y => !y.Equals(x)));
//Which calls Context.SaveChanges(); inside the unit of work class
uow.Save(_logger);
}
更新:问题不在于从集合中删除我的记录。当我在上下文中调用save时。我的数据库中的关系记录仍然存在......没有删除任何内容... aldo它已从集合中删除。
解决 我现在直接从上下文中删除它。 (使用分离的存储库对象)
答案 0 :(得分:10)
这非常依赖于关系的配置。见Entity Framework .Remove() vs. .DeleteObject()
由于您的关系听起来很多,您可能需要为地址本身调用DeleteObject,因为EF不会自动删除孤立的记录。