【问题标题】:EF 6 Data AnnotationEF 6 数据注释
【发布时间】:2017-09-02 14:52:23
【问题描述】:
[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;

给我错误

{"执行命令定义时发生错误。见 详细信息的内部异常。”} 内部异常:{“无效的对象名称 'dbo.PageCategories'。"}

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

仍在搜索此表。

【问题讨论】:

  • 您的代码不包含任何“PageCategories”。此代码不会产生您粘贴的错误。
  • 这就是我关心的问题,我在整个解决方案中搜索 PageCategories 给了我 0 结果,但它会产生这样的错误。
  • 嗨,你能重建包含[Table("CategoryPages")]的项目吗?我相信,要么是那个,要么是第一类被重命名。无论如何,您总是可以使用ILSpy 查看二进制文件。
  • 我可以构建,但当我尝试访问该实体属性运行时时出错。

标签: c# asp.net entity-framework-6


【解决方案1】:

我看不出代码有什么问题。我相信你在生成数据库后重命名了表,这意味着模型和数据库不同步。您必须为此添加新迁移(或删除现有迁移并添加新迁移),然后您应该能够更新数据库。

如果您没有使用过 EF 代码优先迁移,这个MSDN Article 应该会有所帮助。

【讨论】:

    猜你喜欢
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多