/// <summary> /// Get areas by names /// </summary> /// <param name="instanceNames">Area name array</param> /// <param name="city">City for search</param> /// <returns>Area array</returns> public IQueryable<Area> AreaGet(IEnumerable<string> instanceNames, City city) { var inst = instanceNames.Select(n => n.ToUpper()).Distinct(); var res = AreaGet() .Where(s => inst.Contains(s.Name.ToUpper())); if (city != null) { //var res2 = res.Where(s => s.CityID == city.CityID); //var ent = Context.Entry(city); //if ((ent.State == EntityState.Added || ent.State == EntityState.Detached) || ((ent.State == EntityState.Modified || ent.State == EntityState.Unchanged) && Context.Entry(city).Collection(nameof(city.Areas)).IsLoaded)) { var subRes = city.Areas //.Select(a => new { Area = a, State = Context.Entry(a).State }) //.Where(s => s.State == EntityState.Detached || s.State == EntityState.Added) //.Select(s => s.Area) .Join(inst, s => s.Name.ToUpper(), i => i, (s, i) => s); return subRes.AsQueryable(); //res2 //.ToArray() //.Union(subRes) //.Distinct() //.AsQueryable(); } //return res2; } else return res; }
/// <summary> /// Get one area by name /// </summary> /// <param name="instanceName">Area name</param> /// <returns>Area</returns> public Area AreaGet(string instanceName, City city) { return AreaGet(new string[] { instanceName }, city).SingleOrDefault(); }
/// <summary> /// Remove City from database /// </summary> /// <param name="instance">City instance</param> /// <param name="saveAfterRemove">Save database after removing</param> /// <param name="waitUntilSaving">Wait until saving</param> public void CityRemove(City instance, bool saveAfterRemove = true, bool waitUntilSaving = true) { CityRemove(new City[] { instance }, saveAfterRemove, waitUntilSaving); }
/// <summary> /// Create/Get new Area without any link to database /// </summary> /// <param name="instanceName">Area name</param> /// <returns>Area instance</returns> public Area AreaNew(string instanceName = null, bool isDefault = false, City city = null) { try { var res = new Area() { Name = instanceName, City = city }; if (city != null) { //if (Context.Entry(city).State != EntityState.Detached) city.Areas.Add(res); //else // res.City = city; } return res; } catch (Exception ex) { Helpers.Log.Add(ex, string.Format("Repository.AreaNew(instanceName='{0}',city='{1}')", instanceName ?? "NULL", city == null ? "NULL" : city.ToString())); throw; } }
/// <summary> /// Add City to database /// </summary> /// <param name="instance">City instance</param> /// <param name="saveAfterInsert">Save database after insertion</param> /// <param name="waitUntilSaving">Wait until saving</param> public void CityAdd(City instance, bool saveAfterInsert = true, bool waitUntilSaving = true) { CityAdd(new City[] { instance }, saveAfterInsert, waitUntilSaving); }