Запись не будет вставлена, если вы не позвоните InsertOnSubmit
, или она не будет прикреплена к вашему текстовому тексту иным образом.
Вставляете ли вы ее в свою базу данных перед отправкой в форму?Я предполагаю, что если ваш пользователь отменяет форму, тогда объект выбрасывается?
Возможно, вы могли бы опубликовать некоторый код, в частности, где вы создаете объект.
edit: кажется, что ваш клиентприкрепляется к текстовому тексту данных, когда вы присваиваете ему db.Country.FirstOrDefault()
.Эти отношения EntityRef
/ EntitySet
являются двухсторонними - когда вы присваиваете customer.Country = db.Country.FirstOrDefault()
, вы также фактически произносите db.Country.FirstOrDefault().Customers.Add(customer)
, что добавляет клиента к текстовому тексту в качестве нового объекта.Затем, когда вы позвоните по номеру SubmitChanges
, клиент будет вставлен.
Наилучший подход состоит в том, чтобы (а) держать клиента отдельно от страны до тех пор, пока вы не отправите заявку, затем записать, или (б) утилизироватьтекстового контекста, если пользователь отменяет / не может отправить, а затем создать новый контекст.Эти подходы определенно будут работать и являются лучшим шаблоном, чем у вас есть в настоящее время.
Однако еще более простой способ решения проблемы - без каких-либо изменений кода - может состоять в изменении свойств отношения в LINQ-to-SQL дизайнер.Это обходной путь для вашей непосредственной проблемы, а не реальное решение для основной проблемы сохранения контекста данных - скорее всего, вы столкнетесь с большим количеством проблем.Однако попробуйте, потому что это очень простое исправление.
- Откройте базу данных в Visual Studio
- Выберите отношение между клиентом и страной, а затем просмотрите Свойства
- Вы увидите собственность для ребенка и родителя отношений.В разделе «Дочерний» вы хотите установить для «ChildProperty» (или это может быть «IsChildProperty») значение false.
При этом удаляется свойство Customers объекта Country, и это будет означать, что вы можете установить страну так, как вы делаете, без каких-либо побочных эффектов;т.е. он не будет косвенно ассоциировать Клиента со Страной.Это означает, что у объекта Country больше нет «Клиентов», и поэтому вы не можете случайно присоединить Клиента к стране.Дайте мне знать, если это работает для вас!