【发布时间】:2012-10-21 20:28:28
【问题描述】:
进一步提问Can EF automatically delete data that is orphaned, where the parent is not deleted?
我检查了解决方案,正如@Ladislav 在这里建议的那样 https://stackoverflow.com/a/10838228/54801 不幸的是,我注意到该解决方案部分有效。
如果我们采用以下代码:
for (int k = 0; k < 2; k++)
{
var parentObject= _context.Parents.Get(1704);
parentObject.ChildObjects.Clear();
var childObject= _context.ChildObjects.Get(1000*k /*diffrent child for each iteration*/ );
parentObject.ChildObjects.Add(childObject);
_context.Commit();
}
第一次迭代(k=0)进行了删除。 但第二次迭代不会删除!
有没有人可以解决这个问题?
问题可以如下所示“解决”:
if(k == 1)
{
foreach (var project in tender.TenderProjects)
{
_context.Projects.Remove(project);
}
}
但这绝对不理想 我希望我的服务脱离任何 ORM 逻辑..
编辑:
迭代只是真实场景的一个例子。真实场景,用户可以添加父实体的第一个子实体。保存数据并再次删除第一个孩子并在他的位置添加另外两个孩子
【问题讨论】:
-
在第二次迭代中,父 1704 已经与子 27788 相关。删除然后添加该子可以让您回到开始的位置,因此当您调用 SaveChanges 时应该无事可做。
-
迭代只是真实场景的一个例子。真实场景,用户可以添加父实体的第一个子实体。保存数据并再次删除第一个孩子并在他的位置添加另外两个孩子
-
你能提供一个简单的模型和代码来重现这个问题吗?
标签: c# entity-framework entity-framework-5