private static void ConfigureLinqForContext(DbContext context, string configName, out Type contextType) { contextType = context.GetType(); var nameSpace = contextType.Namespace; var assemblyName = contextType.Assembly.FullName; NativeScriptHelper.AddReference(configName, assemblyName); NativeScriptHelper.AddUsing(configName, nameSpace); }
static ContextExtensions() { NativeScriptHelper.AddReference(RosFkConfig, "--ROSLYN--"); NativeScriptHelper.AddReference(RosFkConfig, "ITVComponents.WebCoreToolkit.EntityFramework"); NativeScriptHelper.AddUsing(RosFkConfig, "ITVComponents.WebCoreToolkit.EntityFramework.Models"); NativeScriptHelper.AddUsing(RosFkConfig, "ITVComponents.WebCoreToolkit.EntityFramework.Helpers"); NativeScriptHelper.AddUsing(RosFkConfig, "ITVComponents.Helpers"); NativeScriptHelper.RunLinqQuery(RosFkConfig, new[] { "Fubar" }, "Fubar", "return null;", new Dictionary <string, object>()); NativeScriptHelper.AddReference(RosDiagConfig, "--ROSLYN--"); NativeScriptHelper.AddReference(RosDiagConfig, "ITVComponents.WebCoreToolkit.EntityFramework"); NativeScriptHelper.AddReference(RosDiagConfig, "ITVComponents.Decisions.Entities"); NativeScriptHelper.AddUsing(RosDiagConfig, "ITVComponents.WebCoreToolkit.EntityFramework.Models"); NativeScriptHelper.AddUsing(RosDiagConfig, "ITVComponents.Decisions"); NativeScriptHelper.AddUsing(RosDiagConfig, "ITVComponents.Decisions.Entities.Results"); NativeScriptHelper.RunLinqQuery(RosDiagConfig, new[] { "Fubar" }, "Fubar", "return null;", new Dictionary <string, object>()); }
public void NativeTests() { var test = new TestClass(); NativeScriptHelper.AddReference("DUMMY", "--ROSLYN--"); ExpressionParser.Parse("TestString = `E(\"A\" as hicks -> DUMMY)::\"return Global.GoFuckYourself();\" with {GoFuckYourself:function(){return \"hallo\";}}", test, s => DefaultCallbacks.PrepareDefaultCallbacks(s.Scope, s.ReplSession)); Assert.AreEqual(test.TestString, "hallo"); ExpressionParser.Parse(@"TestString = `E(#DUMMY)::@# int a = -1; for (int i = 0; i< 100000; i++){ a += 10; a = a%71; } return Global.GoFuckYourself(a); # with {GoFuckYourself:function(val){return 'System.String'.Format(""velo{0}"",val);}}", test, s => DefaultCallbacks.PrepareDefaultCallbacks(s.Scope, s.ReplSession)); Assert.AreEqual(test.TestString, "velo35"); }
private static string CreateWhereClause(Type tableType, IDictionary <string, object> postedFilter, out string filterDecl) { var retVal = new StringBuilder(); var availableFilterValues = tableType.GetProperties().Where(n => n.PropertyType == typeof(string) || n.PropertyType.IsValueType).ToArray(); var filterDl = new StringBuilder(); if (postedFilter != null && availableFilterValues.Length != 0) { var generalWhere = new StringBuilder(); var generalFilter = ""; var specialWhere = new StringBuilder(); if (postedFilter.ContainsKey("Filter") && postedFilter["Filter"] != null) { generalFilter = ".Contains(Filter)"; filterDl.Append(@"string Filter = Global.Filter; "); } for (var index = 0; index < availableFilterValues.Length; index++) { var prop = availableFilterValues[index]; if (postedFilter.ContainsKey(prop.Name)) { var typ = NativeScriptHelper.GetFriendlyName(prop.PropertyType); var cvTyp = ""; var attr = (NullSensitiveFkQueryExpressionAttribute)Attribute.GetCustomAttributes(prop, typeof(NullSensitiveFkQueryExpressionAttribute)).FirstOrDefault(); var defaultNullSensitiveQuery = attr?.GetQueryPart($"t.{prop.Name}", $"Var{index}"); if (prop.PropertyType != typeof(string)) { if (!typ.EndsWith("?")) { typ += "?"; } cvTyp = typ.Substring(0, typ.Length - 1); filterDl.Append($@"{typ} Var{index} = ValueConvertHelper.TryChangeType<{cvTyp}>((string)Global.{prop.Name}); bool Var{index}NullExpected = Global.{prop.Name}==""##NULL##""; "); var nsq = defaultNullSensitiveQuery ?? $"t.{prop.Name} == Var{index}"; specialWhere.Append($"{(specialWhere.Length != 0 ? " && " : "")}(Var{index} == null && !Var{index}NullExpected || ({nsq}))"); } else { filterDl.Append($@"string Var{index} = (string)Global.{prop.Name}; bool Var{index}NullExpected = Global.{prop.Name}==""##NULL##""; "); var nsq = defaultNullSensitiveQuery ?? $"t.{prop.Name}.Contains(Var{index})"; specialWhere.Append($"{(specialWhere.Length != 0 ? " && " : "")}(Var{index}NullExpected && t.{prop.Name} == null || !Var{index}NullExpected && ({nsq}))"); } } else if (!string.IsNullOrEmpty(generalFilter)) { if (prop.PropertyType == typeof(string)) { generalWhere.Append($"{(generalWhere.Length != 0 ? " || " : "")}t.{prop.Name}{generalFilter}"); } else { var typ = NativeScriptHelper.GetFriendlyName(prop.PropertyType); var cvTyp = ""; if (!typ.EndsWith("?")) { typ += "?"; } cvTyp = typ.Substring(0, typ.Length - 1); filterDl.Append($@"{typ} Var{index} = ValueConvertHelper.TryChangeType<{cvTyp}>(Filter); "); generalWhere.Append($"{(generalWhere.Length != 0 ? " || " : "")}(Var{index} != null && t.{prop.Name} == Var{index})"); } } } retVal.Append(generalWhere); if (retVal.Length != 0) { retVal.Insert(0, "("); retVal.Append(")"); } if (specialWhere.Length != 0) { if (retVal.Length != 0) { retVal.Append(" && "); } retVal.Append(specialWhere); } if (retVal.Length != 0) { retVal.Insert(0, "where "); } } filterDecl = filterDl.ToString(); return(retVal.ToString()); }
private static IEnumerable RunQuery(DbContext context, string query, string configName, IDictionary <string, object> data) { return((IEnumerable)NativeScriptHelper.RunLinqQuery(configName, context, "Db", query, data ?? new Dictionary <string, object>())); }