为什么使用Entity Framework,导航属性不会显示在数据库内部

时间:2018-06-08 17:44:04

标签: c# database entity-framework-6

我构建了一个代码优先的数据库,我使用的是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 :(得分:2)

.Take返回一个序列。您想使用.Single()

相关问题