分类:
ABP
Abp级联查询,主要要设置主子表的外键关系。
[Table("School")] public class School : Entity<int> { public string Name { get; set; } public virtual List<Student> Students { get; set; } } [Table("Student")] public class Student : Entity<int> { [Required] public virtual School School { get; set; } public string Name { get; set; } }
例如School和Student实体。在子表Student的School属性上添加[Required]标识。这样我们生成的Migration文件,就会自动生成外键和级联删除的关系。
这种要注意,软删除时,不会触发级联删除。所以我们的Model不要继承ISoftDelete接口。
查询时,要注意使用GetAllIncluding方法。
public List<School> GetAllSchool() { return _schoolRepository.GetAllIncluding(s=>s.Students).ToList(); }
但是abp只提供了GetAll时的GetAllIncluding方法,通过Id查询单个对象时,没有。我们可以在仓储的实现中自己实现。
public class SchoolRepository : PHMESRepositoryBase<School>, ISchoolRepository { IDbContextProvider<PHMESDbContext> _dbContext; public SchoolRepository(IDbContextProvider<PHMESDbContext> dbContextProvider) : base(dbContextProvider) { _dbContext = dbContextProvider; } public List<School> GetAllSchool() { var list= _dbContext.GetDbContext().school.Include(p=>p.Students).ToList(); return list; } public School GetSchool(int id) { return _dbContext.GetDbContext().school.Where(p => p.Id == id).Include(p=>p.Students).First() ; } }
级联删除,就直接通过Id删除主表,子表也会自动删除。
public void DeleteSchool(int id) { var a = _schoolRepository.Get(id); _schoolRepository.Delete(a); }
原文地址:https://www.cnblogs.com/czly/p/13267072.html
评价
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术