У меня есть три поля, которые называются Страна, Отдел и Город.
В моей базе данных есть три таблицы, в которые может напечатать пользователь. Библиотека автозаполнения jQuery позволяет пользователям вводить имена и заполнять их. Я хочу, чтобы мои пользователи выбирали из существующих стран / департаментов / городов, а также позволяли им создавать совершенно новые предметы, если они не могут выбирать.
Country Department City
---------- ---------- ---------
CountryId DepartmentId CityId
Name Name Name
CountryId DepartmentId
Я с трудом пытаюсь понять этот, казалось бы, простой процесс.
Вот мой код:
EFRegistryCountryRepository registryCountryRepository = new EFRegistryCountryRepository();
var country = registryCountryRepository.FindAllRegistryCountries().SingleOrDefault(c => c.Name == model.Country);
if (country == null)
{
RegistryCountry newCountry = new RegistryCountry();
newCountry.Name = model.Country;
registryCountryRepository.AddRegistryCountry(newCountry);
registryCountryRepository.SaveChanges();
}
EFRegistryDepartmentRepository registryDepartmentRepository = new EFRegistryDepartmentRepository();
var department = registryDepartmentRepository.FindAllRegistryDepartments().SingleOrDefault(d => d.Name == model.Department && d.RegistryCountry.Name == model.Country);
if (department == null)
{
RegistryDepartment newDepartment = new RegistryDepartment();
newDepartment.RegistryCountryId = country.RegistryCountryId;
newDepartment.Name = model.Department;
registryDepartmentRepository.AddRegistryDepartment(newDepartment);
registryDepartmentRepository.SaveChanges();
}
EFRegistryCityRepository registryCityRepository = new EFRegistryCityRepository();
var city = registryCityRepository.FindAllRegistryCities().SingleOrDefault(d => d.Name == model.City);
if (city == null)
{
RegistryCity newCity = new RegistryCity();
newCity.RegistryDepartmentId = department.RegistryDepartmentId;
newCity.Name = model.City;
registryCityRepository.AddRegistryCities(newCity);
registryCityRepository.SaveChanges();
}
Прежде всего, есть проблема, если Страна не существует, я не могу получить доступ к этой недавно созданной Стране из бита кода Департамента, поскольку она объявлена в условии if (country == null)
.
Я чувствую, что это довольно запутанно, и я был бы признателен за любые предложения о том, как точно закодировать это требование. Я уверен, что это не так сложно, как мне говорит мой мозг.