2017-09-01 39 views
0
[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/)窺視二進制文件。 –

回答

0

我沒有看到任何代碼錯誤。我相信你在生成數據庫後重新命名了表,這意味着模型和數據庫不同步。您必須爲其添加新的遷移(或刪除現有的遷移並添加一個新的遷移),然後您應該能夠更新數據庫。

如果您還沒有使用EF Code First Migrations,那麼MSDN Article應該有所幫助。