public override Symbol CreateModel() { var sym = new Symbol() { LastModificationDate = DateTime.UtcNow, CreationDate = DateTime.UtcNow, Path = Path, Type = new Data.Models.Symbols.Type() { Name = Type }, Import = Import != null ? new Data.Models.Symbols.Import() { Name = Import } : null }; foreach (var proto in Prototypes) { var p = new Data.Models.Symbols.Prototype { Data = proto.Proto, Description = proto.Description, Symbol = sym }; foreach (var par in proto.Parameters) { var param = new PrototypeParam() { Data = par.Proto, Description = par.Description, SymbolRef = par.Ref != null ? new PrototypeParamSymbolRef() { RefPath = par.Ref } : null, Prototype = p }; p.Parameters.Add(param); } sym.Prototypes.Add(p); } foreach (var sref in Symbols) { var symRef = new SymbolRef() { RefPath = sref, Symbol = sym }; sym.Symbols.Add(symRef); } return(sym); }
static void Main(string[] args) { if (args.Length != 2) { return; } string oldDbConnect = args[0]; string newDbConnect = args[1]; var newctx = new Data.Context(new DbContextOptionsBuilder().UseLazyLoadingProxies().UseSqlServer(newDbConnect).Options); var oldctx = new DB.Context(new DbContextOptionsBuilder <DB.Context>().UseMySql(oldDbConnect).Options); foreach (var grp in oldctx.Groups) { var newGrp = new Data.Models.Group() { Name = grp.Name }; foreach (var perm in oldctx.Permissions.Where(o => o.Group == grp.Name)) { var newPerm = new Data.Models.Permission() { Group = newGrp, Perm = perm.Perm }; newGrp.Permissions.Add(newPerm); } newctx.Groups.Add(newGrp); } newctx.SaveChanges(); foreach (var usr in oldctx.Users) { var newUsr = new Data.Models.User() { Id = usr.UUID, FirstName = usr.FirstName, LastName = usr.LastName, Email = usr.EMail, Private = usr.ShowEmail, ProfileMsg = usr.ProfileMsg, Points = usr.Points, Pseudo = usr.Pseudo, Group = newctx.Groups.Where(g => g.Name == usr.Group).First(), Pass = SHA512(usr.Pass), RegistrationDate = usr.Date }; newctx.Users.Add(newUsr); } newctx.SaveChanges(); foreach (var sym in oldctx.Symbols) { var newSym = new Symbol() { Path = sym.Path, CreationDate = sym.Date, LastModificationDate = DateTime.UtcNow, User = newctx.Users.Where(u => u.Id == sym.UserID).FirstOrDefault() }; if (newctx.SymbolTypes.Any(e => e.Name == sym.Type)) { newSym.Type = newctx.SymbolTypes.Where(e => e.Name == sym.Type).FirstOrDefault(); } else { newSym.Type = new Data.Models.Symbols.Type() { Name = sym.Type } }; foreach (var proto in JsonConvert.DeserializeObject <API.Entities.Symbol.Prototype[]>(sym.Prototypes)) { var newProto = new Data.Models.Symbols.Prototype() { Description = proto.Description, Symbol = newSym, Data = proto.Proto }; foreach (var param in proto.Parameters) { var newParam = new Data.Models.Symbols.PrototypeParam() { Description = param.Description, Data = param.Proto, SymbolRef = param.Path != null ? new PrototypeParamSymbolRef() { RefPath = param.Path } : null, Prototype = newProto }; newProto.Parameters.Add(newParam); } newSym.Prototypes.Add(newProto); } foreach (var symref in JsonConvert.DeserializeObject <string[]>(sym.Symbols)) { var newSymRef = new Data.Models.Symbols.SymbolRef() { RefPath = symref, Symbol = newSym }; newSym.Symbols.Add(newSymRef); } newctx.Symbols.Add(newSym); } newctx.SaveChanges(); } }