EF 6.0多对多关系在Codefirst中不起作用

时间:2018-09-24 12:01:58

标签: c# sql-server entity-framework ef-code-first many-to-many

我在数据库中具有以下结构:

对于上述内容,我在EF 6.0 CodeFirst的C#代码中具有以下内容。

[Table("Person")]
public class User
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public long Id { get; set; }

    [Column("FullName")]
    [MaxLength(200)]
    public string Name { get; set; }

    public virtual ICollection<Task> Tasks { get; set; } = new HashSet<Task>();
}



[Table("Task")]
public class Task
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public long Id { get; set; }

    [Column("FullName")]
    [MaxLength(200)]
    public string Title { get; set; }

    public virtual ICollection<User> Users { get; set; } = new HashSet<User>();
}

问题是该集合根本没有被填充,并且总是返回为空。例如,如果我尝试:

userRepository.All.Include(x=>x.Tasks).Where(x=> x.FullName == "John").Select(x=> x.Tasks.Title).ToList();
  

InnerException = {“无效的对象名称'dbo.PersonTask'。”}

我的代码有什么问题?

1 个答案:

答案 0 :(得分:0)

您的数据库中没有PersonTask表,因此在数据库中找不到任何实体。您必须创建映射表。