[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; }
}
当尝试访问类似以下代码的类别时(来自存储库的方法)
int Id = 1;
Page page = context.Pages.Where(x => x.ID == Id).FirstOrDefault();
Category category = page.Categories.FirstOrDefault();
return category;
给我错误
{&#34;执行命令定义时发生错误。见 细节的内部异常。&#34;}内部异常:{&#34;无效的对象名称 &#39; dbo.PageCategories&#39;&#34;}
我没有表名dbo.PageCategories,我将dbo.PageCategories重命名为dbo.Categories
还在寻找这张桌子。
答案 0 :(得分:0)
我没有看到代码有任何问题。我相信你在生成数据库后重命名了表,这意味着模型和数据库不同步。您必须为其添加新的迁移(或删除现有的迁移并添加新的迁移),然后您应该能够更新数据库。
如果您尚未使用EF Code First Migrations,则此MSDN Article应该有所帮助。