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

Mat*_*att 4 c# datacontext entity-framework

我有一个简单edmx的 2 张桌子。这些表由单个Navigation Property. (一对多)。

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

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

编辑以按要求显示代码。

 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();
Run Code Online (Sandbox Code Playgroud)

这是生成的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}   
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*att 5

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

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
  }
Run Code Online (Sandbox Code Playgroud)