private static Dictionary <CityNameConfig, CityIdConfig> GetCityMap(UserConnection userConnection, List <QueryParameter> cities) { var map = new Dictionary <CityNameConfig, CityIdConfig>(); if (!cities.Any()) { return(map); } var select = new Select(userConnection).Distinct() .Column("City", "Name").As("CityName") .Column("City", "Id").As("CityId") .Column("Country", "Name").As("CountryName") .Column("Country", "Id").As("CountryId") .Column("Region", "Name").As("RegionName") .Column("Region", "Id").As("RegionId") .From("City") .LeftOuterJoin("Country").On("City", "CountryId").IsEqual("Country", "Id") .LeftOuterJoin("Region").On("City", "RegionId").IsEqual("Region", "Id") .Where("City", "Name").In(cities.Distinct()); using (DBExecutor dbConnection = userConnection.EnsureDBConnection()) { using (IDataReader reader = dbConnection.ExecuteReader(select.GetSqlText(), select.Parameters)) { while (reader.Read()) { var cityName = reader.GetColumnValue <string>("CityName"); var regionName = reader.GetColumnValue <string>("RegionName"); var countryName = reader.GetColumnValue <string>("CountryName"); var cityId = reader.GetColumnValue <Guid>("CityId"); var regionId = reader.GetColumnValue <Guid>("RegionId"); var countryId = reader.GetColumnValue <Guid>("CountryId"); var cityNameConfig = new CityNameConfig(cityName, regionName, countryName); if (map.ContainsKey(cityNameConfig)) { continue; } map[cityNameConfig] = new CityIdConfig(cityId, regionId, countryId); } } } return(map); }
private void FillAddressDetail(AddressDetail addressDetail, CityIdConfig cityIdConfig) { addressDetail.CityId = cityIdConfig.CityId; addressDetail.RegionId = cityIdConfig.RegionIdConfig.RegionId; addressDetail.CountryId = cityIdConfig.RegionIdConfig.CountryId; }