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

时间:2013-02-01 13:59:29

标签: c# entity-framework datacontext

我有一个简单的edmx,有2个表。这些表由一个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}   

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

4 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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