public static void GenerateStandardChild(this ITable table, Authentication authentication) { var typeCollection = table.GetService <ITypeCollection>(); var types1 = typeCollection.Select(item => item.Name).ToArray(); var types2 = CremaTypeUtility.GetBaseTypes(); var allTypes = types1.Concat(types2); var allKeyTypes = types1.Concat(types2).Where(item => item != typeof(bool).GetTypeName()); var prefixes = new string[] { "SingleKey", "DoubleKey", "TripleKey", "QuadraKey", }; for (int i = 0; i < prefixes.Length; i++) { var query = allKeyTypes.Permutations(i + 1); var keys = query.Random(); var columns = allTypes.Except(keys); table.GenerateStandardChild(authentication, "Child_" + prefixes[i], keys, columns); } }
public static void GenerateStandard(this ITableContext context, Authentication authentication) { var typeContext = context.GetService(typeof(ITypeContext)) as ITypeContext; var root = context.Root; var types1 = typeContext.Types.Select(item => item.Name).ToArray(); var types2 = CremaTypeUtility.GetBaseTypes(); var allTypes = types1.Concat(types2); var allKeyTypes = types1.Concat(types2).Where(item => item != typeof(bool).GetTypeName()); { var category = root.AddNewCategory(authentication, "SingleKey"); foreach (var item in allTypes) { var table = category.GenerateStandardTable(authentication, "SingleKey", EnumerableUtility.AsEnumerable(item), allTypes.Where(i => i != item)); if (table == null) { continue; } table.GenerateStandardChild(authentication); table.GenerateStandardContent(authentication); } var category1 = root.AddNewCategory(authentication, "SingleKeyRefs"); { foreach (var item in category.Tables) { var table1 = item.Inherit(authentication, "Ref_" + item.Name, category1.Path, false); table1.GenerateStandardContent(authentication); } } } { var category = root.AddNewCategory(authentication, "DoubleKey"); var query = allKeyTypes.Permutations(2); for (int i = 0; i < allTypes.Count(); i++) { var keys = query.Random(); var columns = allTypes.Except(keys); var table = category.GenerateStandardTable(authentication, "DoubleKey", keys, columns); if (table == null) { continue; } table.GenerateStandardChild(authentication); table.GenerateStandardContent(authentication); } var category1 = root.AddNewCategory(authentication, "DoubleKeyRefs"); { foreach (var item in category.Tables) { var table1 = item.Inherit(authentication, "Ref_" + item.Name, category1.Path, false); table1.GenerateStandardContent(authentication); } } } { var category = root.AddNewCategory(authentication, "TripleKey"); var query = allKeyTypes.Permutations(3); for (int i = 0; i < allTypes.Count(); i++) { var keys = query.Random(); var columns = allTypes.Except(keys); var table = category.GenerateStandardTable(authentication, "TripleKey", keys, columns); if (table == null) { continue; } table.GenerateStandardChild(authentication); table.GenerateStandardContent(authentication); } var category1 = root.AddNewCategory(authentication, "TripleKeyRefs"); { foreach (var item in category.Tables) { var table1 = item.Inherit(authentication, "Ref_" + item.Name, category1.Path, false); table1.GenerateStandardContent(authentication); } } } { var category = root.AddNewCategory(authentication, "QuadraKey"); var query = allKeyTypes.Permutations(4); for (int i = 0; i < allTypes.Count(); i++) { var keys = query.Random(); var columns = allTypes.Except(keys); var table = category.GenerateStandardTable(authentication, "QuadraKey", keys, columns); if (table == null) { continue; } table.GenerateStandardChild(authentication); table.GenerateStandardContent(authentication); } var category1 = root.AddNewCategory(authentication, "QuadraKeyRefs"); { foreach (var item in category.Tables) { var table1 = item.Inherit(authentication, "Ref_" + item.Name, category1.Path, false); table1.GenerateStandardContent(authentication); } } } }