Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从集合实体框架中删除项_C#_Entity Framework 4_Linq To Entities - Fatal编程技术网

C# 从集合实体框架中删除项

C# 从集合实体框架中删除项,c#,entity-framework-4,linq-to-entities,C#,Entity Framework 4,Linq To Entities,我有一个名为“target”的模型,由entityframework检索,其中包含一个集合地址 在删除了其他集合中不存在的所有项之后,我将保存实体框架上下文 但是,当检查我的数据库时,记录仍然存在。而我的linq代码确保从集合中删除项目 这是我的linq代码: using (IUnitOfWork uow = _uow.CreateUnitOfWork()) { var target = _repository.GetByBron(uow, bron.BronId); targe

我有一个名为“target”的模型,由entityframework检索,其中包含一个集合地址

在删除了其他集合中不存在的所有项之后,我将保存实体框架上下文

但是,当检查我的数据库时,记录仍然存在。而我的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时。我数据库中的关系记录仍然存在。。。没有删除任何内容。。。阿尔多:它已从收藏中删除

已解决
我现在直接从上下文中删除它。(使用单独的存储库对象)

这取决于关系的配置。看


由于您的关系听起来是多对多关系,您可能需要为地址本身调用DeleteObject,因为EF不会自动删除孤立记录。

您正在调用
SaveChanges()
?target.Adressen的类型是什么?
RemoveAll
是否只是从集合中删除项目,或者该方法中是否存在调用基础存储库上的
remove
的内容?请发布(假定)该方法的代码使用EF从数据库中删除记录。我通过从集合中删除项并保存自动删除的记录的上下文来解决这一问题?没有什么特别的,只是从集合中删除项目。当我添加项目时,它确实起作用。。。那么为什么不把它们去掉呢?(更新了我的原始帖子)只有当关系的FK是相关实体主键的一部分时,才会删除相关记录。但是直接从上下文中手动移除/删除实体应该会从数据库中移除它们。