2014-11-02 123 views
0

嗨我试图在MVC中创建一个数据库,其中包含与它们相关联的电视节目和演员列表。 每个电视节目都可以有多个演员,演员可以出现在许多电视节目中。每个演员也有一个演员的名字,他们出现在每个节目中。这是我的模型。多对多关系代码优先

 public class TvShow 
{ 
    public int ShowId { get; set; } 
    public string Name { get; set; } 
    public List<Actor> cast { get; set; } 

} 

public class Actor 
{ 
    public int ActorId { get; set; } 
    public string Name { get; set; } 
    public List<TvShow> shows { get; set; } 
} 

public class Cast 
{ 
    public int ShowId { get; set; } 
    public int ActorId { get; set; } 
    public string CastName { get; set; } 
} 

public class TvContext : DbContext 
{ 
    public DbSet<TvShow> Shows { get; set; } 
    public DbSet<Actor> Actors { get; set; } 
} 

我查询数据库并运行应用程序来为我创建数据库,但CastName属性没有出现在我的链接器表中。任何帮助将不胜感激。

回答

1

EF如何知道你想使用实体Cast作为M:N关系表?

当你想在多对多关系中有一个附加属性时,你必须链接TvShow和Actor实体的实体Cast。因此,该模型可以是这样的:

public class TvShow 
{ 
    public int ShowId { get; set; } 
    public string Name { get; set; } 
    public List<Cast> Casts { get; set; } 

} 

public class Actor 
{ 
    public int ActorId { get; set; } 
    public string Name { get; set; } 
    public List<Cast> Shows { get; set; } 
} 

public class Cast 
{  
    public string CastName { get; set; } 
    public TvShow TwShow { get; set; } 
    public Actor Actor { get; set; } 
} 

,你可以得到的演员名单给出TvShow与下面的查询:

twShow.Casts.Select(c => c.Actor); 
相关问题