我正在使用带有Breeze.js
后端的Entity Framework WebAPI
,我需要删除未加载到客户端的大量数据。我真的很想在服务器上这样做而不加载它。
有“微风”吗?我的意思是BreezeController
中的方法。
修改
我必须删除一个表中属于该用户的所有行,其日期字段是将来的,以及所有子行。
答案 0 :(得分:1)
public override int SaveChanges()
{
foreach (
var entry in
this.ChangeTracker.Entries()
.Where((e => (e.State == (EntityState) Breeze.WebApi.EntityState.Deleted))))
{
if (entry.Entity.GetType() == typeof(User))
{
var entity = entry.Entity as User;
var childEntitiesInFuture = ChildEntities.Where(c => c.DateField > DateTime.Now);
foreach (var child in childEntitiesInFuture){
var grandchildrenForDeletion = Grandchildren.Where(c => c.ChildId == child.Id);
foreach (var g in grandchildrenForDeletion) Grandchildren.Remove(g);
ChildEntities.Remove(child);
}
}
}
}
假设您要删除User
,User
中有一个ChildEntity
保存了ChildEntities
个ChildEntity
,而Grandchild
中有Grandchildren
个{{1}}已保存在{{1}}中{1}}。有点杂乱的名字,但这就是你得到的没有真名:)
此方法进入Context类。祝你好运。