{ Id; Number; } // их 10 штук забиты в базу
модель Order { Id; Date; Room room} // к Order.room крепиться одна комната.
Как в контроллере обработать забитую юзером комнату, чтобы прикрепить объект комнаты номер N к room в Order? у меня null в БД заходит, если я линейно присваиваю room найденный инстанс Room-N.
так у order должен быть RoomId
Т.е. чтобы объявить FK в модели - надо 2 поля выделять? всеравно неясен механизм. а один не будет работать?
Предположем я введу RoomId с атрибутом [ForeignKey("Rooms")], верно? Дальше в контроллеле, просто присвоить RoomID = Id обьекта Room нужной? И дальше, оно в web api при сериализации, будет выдавать обьект комнаты? Оно будет автоматически работать? т.е. RoomId = 1; А Room room - сам встанет?
крч если я правильно понял то надо сделать так _dbContext.Order.Include(x=>x.Room).FirstOrDefault(x=>x.Id = orderId), вот тут уже к ордеру подтянется Room
😭😩 пойду с курсов по EF посмотрю как с FK правильно работать мне казалось что понятно и попроще должно быть.. с доков что-то оказалось нефункционально. я привык к другому принципу действия ORM. видимо ORM ORM рознь. просто присваиваешь объект и оно само все делает. а тут оно под SQL логику похоже
я ef плохо знаю может и присвоить Room значение будет рабоать
У меня есть к вам просьба. Сходите на SQL-ex и прорешайте там первую ступень. Тогда большая часть вопросов у вас исчезнет.
Если FK задаешь, db контекст нужно перечитать навигационные свойства так не работают
очень кстати похоже на то. надо было просто в документации пошарится. там есть оба варианта, как с RoomId, в два поля, так и без, в одно - называется shadow foreign key. есть похожий вариант кода, и объясняется, что оно само разбирается через Include() куда загнать найденный объект.
Обсуждают сегодня