static void Main(string[] args) { SeedEngine.ApplyVersionedUpdates(); }
public abstract class SeedBase { public abstract void Execute(); } public class SeedEngine { public static void ApplyVersionedUpdates() { // TODO: Create a SeedVersion table var asm = Assembly.GetExecutingAssembly(); // TODO: Query the most recent seed version run against the database, and filter // the next statement for everything newer than that var seedVersions = asm.DefinedTypes.Where(a => a.BaseType == typeof(SeedBase)).OrderBy(a => a.Name); foreach (var seedVer in seedVersions) { var result = Activator.CreateInstance(seedVer) as SeedBase; if (result == null) continue; Debug.Print($"Running seed {seedVer.Name}"); result.Execute(); // TODO: Insert a SeedVersion record with the current {seedVer.Name} } } }