RuiBarreiros Ответов: 1

Как обновить сущность с помощью свойств навигации в entity framework?


Привет,
У меня есть TableA(ID,Name и TableB_ID) и TableB(TableB_ID, Description), которые имеют отношение 1 ко многим.
После создания контекста, я хочу, чтобы обновить запись в таблице tablea, изменив его значение TableB_ID.
Дело в том, что я не хочу напрямую обновлять значение tableB_ID. Я хочу изменить эту запись, указав другое значение "описание" из таблицы TableB.

Должен ли я писать это или entity framework делает это за меня?

спасибо

Что я уже пробовал:

Изменение значения "описание" с помощью навигационных свойств таблицы не работает.

1 Ответов

Рейтинг:
9

Ruard

Я предполагаю, что это описание уникально. Так что вам придется самому искать подходящее описание. Это что-то вроде этого:

var descr = "something";
var tabB = context.TableB.FirstOrDefault(f => f.Description == descr );

if (tabB == null)
{
    // Assume TableB_ID is autonumber / identity in database.
    var newTabB = new TableB() { Description = descr };
    TableA.TableB = newTabB ;
    // Not sure if this line is required.
    context.TableB.Add(newTabB);
}
else
    TableA.TableB = tabB;

context.SaveChanges();


RuiBarreiros

Ваши предположения верны! Спасибо вам за вашу помощь! Итак, я должен написать код, чтобы получить соответствующий TableB_ID из поля описания...
Я надеялся, что Entity Framework сможет сделать это за меня, но, думаю, мне придется узнать больше об EF.
Спасибо!