Почему при использовании Entity Framework свойства навигации не отображаются внутри базы данных - PullRequest
0 голосов
/ 08 июня 2018

Я создал базу данных с первым кодом, я использую Entity Framework, и все шло хорошо, пока я не вошел в базу данных через проводник SQL Server.

Я обнаружил, что внутри моих объектов навигациясвойств там нет.В коде они работают нормально, и Visual Studio автоматически завершает работу с этими свойствами навигации, но внутри базы данных физически нет столбцов для них или каких-либо упоминаний.Они появляются на диаграмме .edmx, и все выглядит хорошо.

Я пытался построить БД сверху, но все равно не работает.База данных сохранена в моем каталоге проекта ./bin/debug.Есть идеи, почему?

Это в основном список фильмов и актеров, когда я пытаюсь добавить фильм в список фильмов, которые содержит объект актера, он просто не отображается в базе данных.

Другой вопрос: я хочу найти в базе данных объект, и когда я его нахожу, я хочу получить сам объект с его собственным типом и использовать его.

Когда я пытаюсь использовать

var query2 = (from b in ctx.Actors
              where (b.FirstName == f && (b.LastName) == l)
              select b).Take(1);    // assert that only one is chosen

// Oscar.BestActor = query2.ToList();
Oscar.BestActor = (Actor)query2;

// not sure about this line (ctx.entry...) - am I doing this right?
ctx.Entry(Oscar.BestActor).State = System.Data.Entity.EntityState.Modified;

ctx.SaveChanges();

, я получаю эту ошибку:

Невозможно привести объект типа 'System.Data.Entity.Infrastructure.DbQuery.`1 [QueryMoviesFinal.Actor] 'для ввода' QueryMoviesFinal.Actor '.

Спасибо, что нашли время и прочитали это!

1 Ответ

0 голосов
/ 08 июня 2018

.Take возвращает последовательность.Вы хотите использовать .Single().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...