平时我们在使用EF的过程中,都是有DbContext中每一个表加一个DbSet,如果我们一个项目有上千个表,就得加上千个DbSet,是很麻烦的一个工程,现在采用一个简单的方法处理,在DbContext类的OnModelCreating方法中加上如下代码:
protected override void OnModelCreating(ModelBuilder modelBuilder) { var assembly = Assembly.GetExecutingAssembly(); foreach (Type type in assembly.ExportedTypes) { if (type.IsClass && type != typeof(EntityBase) && typeof(EntityBase).IsAssignableFrom(type)) { var method = modelBuilder.GetType().GetMethods().Where(x => x.Name == "Entity").FirstOrDefault(); if (method != null) { method = method.MakeGenericMethod(new Type[] { type }); method.Invoke(modelBuilder, null); } } } base.OnModelCreating(modelBuilder); }
动态加载,不用再一个一个写了,简单方便