这个错误很奇怪。当我在 VS2008 中使用 LINQ to SQL 时,我没有遇到任何问题,但我现在在 VS2012 中,我发现了这种非常奇怪的情况。
首先,我有西班牙语的VS2012,所以复数设置为False。但是,即使将复数设置为 True,它也应该只影响类名,而不影响在数据库中实际执行的查询。
嗯......在介绍之后,我告诉你我在 SQL Server 数据库中有一个名为“Parametro”的表。我将 EF 模型添加到我的项目中,生成了一个名为“Parametro”的类。我添加了一个生成 ParametroDataContext 类的控制器。
第一个错误是上下文类包含一个名为“Parametroes”的属性(为什么即使我没有启用复数设置?)。
我将该属性重构为“Parametros”。
然后,我在控制器中运行以下查询:
object o = from p in ParametroContext.Parametros
where p.par_codigo.Equals("LOGO")
select p;
当我看到在数据库中执行的底层查询是:
SELECT *
FROM [dbo].[Parametroes] AS [Extent1]
WHERE N'LOGO' = [Extent1].[par_codigo]
如您所见,LINQ to SQL 已将表名更改为“Parametroes”。这让我陷入了困境
谁能向我解释这种不稳定的行为并提出解决方案?
谢谢詹姆