我正在学习实体框架。在我的数据库中,我有以下表格
电影表
TABLE [dbo].[movies](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](50) NOT NULL,
[director] [varchar](50) NOT NULL,
[genreId] [int] NULL )
流派表
TABLE [dbo].[genres](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](50) NULL,
[category] [varchar](50) NULL
因此,genreId
中的Movies
列是对id
Genres
列的简单查找
我正在尝试在Entity Framework中配置此关联。这是我的电影课程:
[Table("movies")]
public class Movie
{
[Key]
public int Id { get; set; }
public string Director { get; set; }
public string Name { get; set; }
public int genreId { get; set; }
[ForeignKey("genreId")]
public Genre Genre { get; set; }
}
这是我的类型课程:
[Table("genres")]
public class Genre
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Category { get; set; }
}
当我查询电影时,类型成员为空。我无法弄清楚为什么?
答案 0 :(得分:0)
公共虚拟类型流派{get; set;} 虚拟关键字让EF在运行时创建一个类,也称为代理类,并根据需要设置关系
答案 1 :(得分:0)
您在实体框架中有3种类型的加载:渴望,懒惰和显式。您需要加载引用的对象。请阅读这篇文章:https://msdn.microsoft.com/en-us/library/jj574232(v=vs.113).aspx
然而,最简单的解决方案是定义public virtual Genre Genre{get;set}
以允许延迟加载。
答案 2 :(得分:0)
对于那些关注这个问题的人,我通过添加include
方法
context.Movies
.Include(m => m.Genre)