Я пытаюсь получить доступ к сущностям из базы данных для обеспечения целостности данных при внесении изменений в мою базу данных.
Я тестирую различные способы изменения внешнего ключа / навигационных свойств, чтобы они указывали на разные строки в связанной таблице.
Класс «Мой ребенок» выглядит следующим образом,
public string Name { get; set; }
public decimal Balance { get; set; }
public int AccountTypeId { get; set; }
public virtual AccountType AccountType { get; set; }
и соответствующий родитель,
public string Name { get; set; }
public virtual ICollection<Account> Accounts = new ICollection<Account>()
Я использую шаблоны единиц работы и репозитория для доступа к данным, поэтому в моем классе тестирования я делаю следующее:
(uow = new UnitOfWork)
AccountType accountType1 = new AccountType() { Name = "Bank" };
AccountType accountType2 = new AccountType() { Name = "Loan" };
uow.AccountTypes.Add(accountType1);
uow.AccountTypes.Add(accountType2);
uow.Commit();
Account account1 = new Account() { Name = "RBS", Balance = 20, AccountTypeId = 1 };
uow.Accounts.Add(account1);
uow.Commit();
Однако при попытке доступа к свойству AccountType
в account1
это не удается, я попытался установить для AccountType
ссылку accountType1
, однако, когда дело доходит до изменения AccountType
с одного на другой, он требует, чтобы я загружал новый accountType
из базы данных и затем назначал его Account
, каждый раз, когда я делаю это изменение, вместо простого изменения Foreign key
. Разве нет способа изменить ассоциации через Foreign Key
и все же разрешить lazy loading
? Или мне нужно предоставить собственный запрос, используя Foreign Key
в таблице родительских сущностей?
Спасибо!
Редактировать
Если я создаю сущности и сохраняю их все в одном контексте, а затем пытаюсь получить доступ к свойствам навигации, это работает, однако, если я распоряжаюсь контекстом, а затем в новом контексте выполняю запрос, он не загружает информацию.