我有一个简单的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}
但是对于我的生活,我看不出在哪里/如何决定更改名称查询到内部联接的查询。
答案 0 :(得分:4)
找到答案。多元化仅仅是模型生成。我必须明确地告诉我的DbContext不要对名称进行复制(我不敢开始重命名这个数据库,因此我坚持使用了那种奇怪的约定。)
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
答案 1 :(得分:0)
尝试从edmx中删除表格并更新模型后。
答案 2 :(得分:0)
您似乎正在使用基于模型的开发。如果是这种情况,那么您似乎在模型中进行了一些更改,但没有将它们反映到数据库中。
使用模型中的generate database选项,它将使数据库与模型同步。
答案 3 :(得分:0)
尝试将图形视图关闭到EF模型。 右键单击编辑并在XML编辑器中打开。 映射到表应该在那里,你可以纠正它。 要么 如果您在导入/更新后已经切换模式,则可以完全删除模型并再次导入模型 访问模型的代码应该仍然正常。