EF 6数据注释

问题描述:

[Table("Pages")] 
public class Page 
{ 
    [Key, Column("Page_Id")] 
    public int ID { get; set; } 
    public string Name {get;set;} 
    public virtual ICollection<Category> Categories { get; set; } 
    public Page() 
    { 
     this.Categories = new HashSet<Category>(); 
    } 
} 

    [Table("Categories")] 
    public class Category 
    { 
     [Key] 
     public int Category_ID { get; set; } 
     public string Name {get;set;} 
     public virtual ICollection<Page> Pages { get; set; } 
     public Category() 
     { 
      this.Pages = new HashSet<Page>(); 
     } 
    } 
[Table("CategoryPages")] 
    public class CategoryPage 
    { 
     [Key, Column(Order = 0)] 
     public int category_ID { get; set; } 
     [Key, Column(Order = 1)] 
     public int page_ID { get; set; } 

     public virtual Page Page { get; set; } 
     public virtual Category Category { get; set; } 
    } 

public partial class Context : DbContext 
{ 

    public Context() : base("name=Context") { } 
    public virtual DbSet<Page> Pages { get; set; } 
    public virtual DbSet<Category> Categories { get; set; } 
    public virtual DbSet<CategoryPage> CategoryPages { get; set; } 
} 

当尝试访问类别,如下面的代码(从储存库方法)EF 6数据注释

int Id = 1; 
    Page page = context.Pages.Where(x => x.ID == Id).FirstOrDefault(); 
    Category category = page.Categories.FirstOrDefault(); 
    return category; 

给出Me错误

{“,而执行命令定义时发生错误。“内部异常:{”无效对象名称 'dbo.PageCategories'。“}

我没有表名dbo.PageCategories,我将dbo.PageCategories更名为dbo.Categories

它仍在搜索此表。

+0

您的代码不包含任何“PageCategories”。此代码不能产生您粘贴的错误。 –

+0

这就是我所关心的,我在整个解决方案中搜索PageCategories给了我0结果,但它产生了这样的错误。 – HPP

+0

嗨,你可以*重建*包含'[Table(“CategoryPages”)]的项目吗?我相信,无论是那一个,还是一个类别都被重新命名了。无论如何,你总是可以使用[ILSpy](http://ilspy.net/)窥视二进制文件。 –

我没有看到任何代码错误。我相信你在生成数据库后重新命名了表,这意味着模型和数据库不同步。您必须为其添加新的迁移(或删除现有的迁移并添加一个新的迁移),然后您应该能够更新数据库。

如果您还没有使用EF Code First Migrations,那么MSDN Article应该有所帮助。