C# 实体框架一对多生成异常

C# 实体框架一对多生成异常,c#,entity-framework,entity-framework-4,C#,Entity Framework,Entity Framework 4,我有一个包含2个类的数据库,并且建立了一对多关系。这被设置为一个shop(我运行代码所针对的主要类),它在我的数据库中加入到shop销售的产品类别列表中 因此,桌子是 shops int id //shopId & primaryKey varchar(50) shopName ... //other details left out. ShopProductTypes int id

我有一个包含2个类的数据库,并且建立了一对多关系。这被设置为一个shop(我运行代码所针对的主要类),它在我的数据库中加入到shop销售的产品类别列表中

因此,桌子是

shops 
int          id        //shopId & primaryKey
varchar(50) shopName  
...                    //other details left out.

ShopProductTypes
int          id       //Category id
int          ShopId   //Foreign Key to shop table
varchar(50)  CategoryName  
...
这是所有straighforwards,并通过sql viewer等进行处理

我已经导入了数据库模型,并取消选中了Pluralize/Singularize框

我的背景是

 public ReportingContext(string connectionString) : base(connectionString)
        {

            Database.SetInitializer<ReportingContext>(null);

        }

      protected override void OnModelCreating(DbModelBuilder modelBuilder)
      {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
      }

        public DbSet<AutoComp_Reporting.DAL.Shop> Shops{get; set;}

        public DbSet<AutoComp_Reporting.DAL.ShopProductTypes> ShopCategories { get; set; }

    }
我可以看到所有的商店,但如果我尝试查看QuickWatch中的类别,我会得到以下例外

{“执行命令定义时出错。请参阅 详细信息的内部异常。“}

最终显露出来的放松

    Message "Invalid column name 'Shops_Id'.\r\nInvalid column name 'Shops_Id'.\r\nInvalid column name 'Shops_Id'."
我可能是做错了什么,因为我是实体框架的新手,但我无法修复这个错误。 我的数据库连接字符串中有
MultipleActiveResultSets=True


那么,我该如何找出这个错误的原因,并/或修复它呢?我猜实际的内部异常是由于框架解释属性的方式造成的,因此可能是一个转移视线的问题。

更改表中外键的名称,并应用ForeignKey属性似乎已经奏效。但是我确信这不是正确的解决方案,否则它意味着只有当您有一个按照特定命名约定构建的数据库时,框架才能开箱即用


请记住这是一个遗留应用程序,如何一次性解决此问题?

您的错误消息状态为
Shops\u Id
,而在您的表定义中它显示为
ShopId
。我知道,老实说,我假设这是框架的人工制品,因为我在代码中使用的模型是从数据库生成的。或者你是说每次我导入/更新模型时,我都需要编辑自动生成的代码,以便id与框架期望的匹配吗?如果它试图迫使我重新设计现有数据库以满足其期望,那么它似乎是一个非常糟糕的框架!你能发布ShopProductTypes代码吗?我同意,但这是唯一可以做到的我肯定会首先检查,因为这是异常最明显的原因。[Column(“ShopId”,TypeName=“int”)]公共字符串Shops_Id{get;set;}
System.Data.EntityException {System.Data.EntityCommandExecutionException}
    Message "Invalid column name 'Shops_Id'.\r\nInvalid column name 'Shops_Id'.\r\nInvalid column name 'Shops_Id'."