4

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

当我运行我的代码时,我得到一个异常:“无效的对象名称 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();

这是生成的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}   

但是对于我的生活,我看不到它在哪里/如何决定将名称 Inquiry 更改为 Inquiries on the inner join。

4

4 回答 4

5

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

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
  }
于 2013-02-01T15:09:25.470 回答
0

尝试从 edmx 和更新模型后删除表。

于 2013-02-01T14:03:14.127 回答
0

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

使用从模型生成数据库选项,它会将数据库与模型同步。

于 2013-02-01T14:14:39.260 回答
0

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

于 2013-02-01T14:39:40.477 回答