私は3つのフィールドをCountry、Department、およびCityといいます。オートコンプリートを使用して外部キー参照を保存するか、新しい項目の場合は新しいエンティティを作成します
ユーザーがに入力できる私のデータベースにある3つのテーブルがあります。 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)
内で宣言されますから、私は、コードの部署ビットからその新しく作成された国にアクセスすることができない問題があります調子。
私はこれがうんざりしていると感じています。私はどのようにしてコードのこの要件の方法についての提案を感謝します。私の脳が私に言っているほど難しくないと確信しています。
私はそれを理解しました私は可能な限り私の答えを掲示します。 –