У меня есть несколько классов, которые имеют отношение к другим классам для таких свойств, как Местоположение, Валюта и т. Д. Возьмем следующий пример:
Public Class Transaction
Public Property ID As Integer
Public Property Description As String
Public Property Quantity As Integer
Public Property SaleAmount As Double
Public Overridable Property Currency As Currency
End Class
Public Class Currency
Public Property ID As String
Public Property Description As String
Public Property Symbol As String
Public Property SymbolImage As String
End Class
Я добавляю свои валюты, когда инициализирую приложение для первого использования. При добавлении транзакции у меня есть выпадающий список для выбора валюты.
У меня нет проблем с сохранением транзакции в БД, а также сохраняется идентификатор валюты.
Когда я редактирую транзакцию и пытаюсь изменить валюту, я не могу ее сохранить, чтобы сохранить обратно в БД.
<HttpPost()>
Function Edit(transaction As Transaction) As ActionResult
transaction.Currency = db.Currencies.Find(transaction.Currency.ID)
Debug.Print("Currency: " & transaction.Currency.ID)
If ModelState.IsValid Then
db.Entry(transaction).State = EntityState.Modified
db.SaveChanges()
Return RedirectToAction("Index")
End If
Return View(transaction)
End Function
Когда я выполняю debug.print указанным выше способом post, валюта правильно отображается как измененная валюта, но идентификатор валюты в записи транзакции в БД не обновляется.
Я немного искал и читал и не нашел много / ничего.
Я попытался добавить эту строку в метод post, но он все равно не сохранил изменения:
db.Entry(transaction.Currency).State = EntityState.Modified
Я в тупике и буду признателен за любую помощь!