public class Mode1 : IDataItem { public string Name { get; set; } public int Id { get; set; } } public class Mode2 : IDataItem { public int Age { get; set; } public int Id { get; set; } } public class MyContext:DbContext { public MyContext():base("name=mydb") { //System.Data.Entity.Database.SetInitializer(new Models.CreateData()); } //public DbSet<Mode1> Mode1s { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { Type[] ts = new Type[] { typeof(Mode1), typeof(Mode2) }; foreach (var item in ts) { Type mappingType = typeof(StdMapping<>).MakeGenericType(item); object obj = Activator.CreateInstance(mappingType); Type cfgType = modelBuilder.Configurations.GetType(); // var method = cfgType.GetMethod("Add", new Type[] { typeof(EntityTypeConfiguration<>) }); AddFromAssembly var methods= cfgType.GetMethods(BindingFlags.Instance | BindingFlags.Public); var method = methods.First(t => t.Name == "Add" && t.GetGenericArguments()[0].Name == "TEntityType"); method.MakeGenericMethod(item).Invoke(modelBuilder.Configurations, new object[] { obj }); } var sqliteConnectionInitializer = new SqliteCreateDatabaseIfNotExists<MyContext>(modelBuilder); Database.SetInitializer(sqliteConnectionInitializer); } } internal partial class StdMapping<T> : EntityTypeConfiguration<T> where T : class, IDataItem { public StdMapping() { this.HasKey(t => t.Id); //this.ToTable("tbCases"); } } public class Myclass { public void Add<T>(List<T> cols) { } public void Add<T>(System.Collections.ObjectModel.Collection<T> cols) { } } public interface IDataItem { int Id { get; set; } } class Program { static void Main(string[] args) { int a = 5; int b = 2; int c = 3; int d = 4; using (var context = new MyContext()) { // context.Database.CreateIfNotExists(); context.Set<Mode2>().Add( new Mode2() { Id=2, Age=24}); context.SaveChanges(); Console.WriteLine(); } Console.WriteLine("sss"); Console.ReadKey(); // Assembly. } }