检索数据时出现EF错误:SQL中的表名错误

我有一个带2个表的简单edmx 。 这些表由单个Navigation Property 。 (1对多)。

当我运行我的代码时,我得到一个例外:“无效的对象名称dbo.Enquiries”

数据库中没有dbo.Enquiries (它实际上称为dbo.Enquiry ),因此错误本身是不言自明的。 但它在哪里找到了Name,我该如何解决?

编辑以按要求显示代码。

  var foo = (from d in context.Dealerships join e in context.Enquiry on d.Id equals e.DealershipId where (d.ParentBusinessId == id) select d).AsEnumerable(); 

这是生成的sql。

  foo {SELECT [Extent1].[Id] AS [Id], [Extent1].[BusinessName] AS [BusinessName] FROM [dbo].[Dealerships] AS [Extent1] INNER JOIN [dbo].[Enquiries] AS [Extent2] ON [Extent1].[Id] = [Extent2].[DealershipId] WHERE [Extent1].[ParentBusinessId] = @p__linq__0} 

但是对于我的生活,我看不出在哪里/如何决定更改名称查询到内部联接的查询。

找到了答案。 多元化仅仅是模型生成。 我必须明确地告诉我的DbContext不要将名称复用(我不敢开始重命名这个数据库,所以我坚持使用了奇怪的约定。)

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

尝试从edmx中删除表,并在更新模型后。

您似乎正在使用基于模型的开发。 如果是这种情况,那么您似乎在模型中进行了一些更改,但没有将它们反映到数据库中。

使用模型中的generate database选项,它将使数据库与模型同步。

尝试将图形视图关闭到EF模型。 右键单击编辑并在XML编辑器中打开。 映射到表应该在那里,你可以纠正它。 或者如果您在导入/更新后切换了模式,则可以完全删除模型并再次导入模型。
访问模型的代码应该仍然是Ok。