EF Core 对复杂关系的表进行删除操作。需要先Include。如果子表数据量比较大怎么办。

2019-12-27 09:05发布

问题:

现在有ArticleCate文章类别和Article文章两张表。
现在要删除文章类别的一条数据,需要先Include 类别的导航属性。
因为文章表数据量比较大 Include操作比较耗时。
有没有好一些的解决办法。

不想用直接手写sql来删除的方法。
Include的时候可不可以忽略一些字段不加载进来,因为文章表也就Content字段数据多一些。

回答1:

可以试试 Entity Framework Core Plus

// using Z.EntityFramework.Plus; // Don't forget to include this.

// DELETE all users inactive for 2 years
var date = DateTime.Now.AddYears(-2);
ctx.Users.Where(x => x.LastLoginDate < date)
         .Delete();

// DELETE using a BatchSize
var date = DateTime.Now.AddYears(-2);
ctx.Users.Where(x => x.LastLoginDate < date)
         .Delete(x => x.BatchSize = 1000);


回答2:

1 排除字段:我记得EF 查询时时有.ignore的方法的
2 加载部分字段:找了一下

 using (var context = new EntityContext())
     {
        var result = from s in context.Users
            orderby s.ID
             select new {s.name,s.years};
    };

https://ithelp.ithome.com.tw/questions/10192142

  dbEntities db = new dbEntities();
        var list = db.news.Select(c => new { c.title, c.times }).ToList();/

https://www.cnblogs.com/webapi/p/10449319.html