//// Experiment 1 //public static T Extend1<T>(T target, params object[] sources) //{ // foreach (var source in sources) // { // JObject.FromObject(source).ToObject<T>(); // } // return target; //} //// Experiment 2 //public static Dto Extend2(Dto target, params Dto[] sources) //{ // foreach (var source in sources) // { // foreach (var prop in source) // { // target[prop.Key] = prop.Value; // } // } // return target; //} public static Dto Extend(Dto target, Dto source, bool onlyExistingProperties = false) { foreach (var prop in source) { if (!(onlyExistingProperties && target.ContainsKey(prop.Key))) { target[prop.Key] = prop.Value; } } return(target); }
public static bool ValidDtoKey(string entityTypeName, Dto dto, MetadataSrv.Metadata metadataSrv) { var keyNames = metadataSrv.EntityTypes[entityTypeName].Key; foreach (var name in keyNames) { if (!(dto.ContainsKey(name) || Regex.IsMatch(dto[name].ToString(), @"^\d+$"))) { return(false); } } return(true); }
public static bool KeyPresent(string entityTypeName, Dto dto, MetadataSrv.Metadata metadataSrv) { var keyNames = metadataSrv.EntityTypes[entityTypeName].Key; foreach (var keyName in keyNames) { if (!dto.ContainsKey(keyName)) { return(false); } } return(true); }
public static bool ValidDto(string entityTypeName, Dto key, Dto dto, MetadataSrv.Metadata metadataSrv) { var keyNames = metadataSrv.EntityTypes[entityTypeName].Key; // if dto has key fields, their values should match the key values from query string foreach (var name in keyNames) { if (dto.ContainsKey(name) && dto[name] != key[name]) { return(false); } } return(true); }
internal static string GetFilterFromKey(string[] keyNames, Dto dto) { var result = new List <string>(); if (keyNames.Length == 0) { throw new Exception("Invalid key"); } foreach (var keyName in keyNames) { if (!dto.ContainsKey(keyName)) { throw new Exception("Key fiels not present"); } result.Add(keyName + "=" + dto[keyName]); } return(string.Join(" AND ", result)); }