解决方法:在查询的模型类的类名上方加上Table属性。例如你想查询Artist的数据,那么加[Table("Artist")]完毕。
不求甚解者,可以离开了,想深入了解,请继续浏览。
案例回顾:就拿Artist来说事吧
(1)数据库中已经存在数据表Artist,如图1.1
图1.1
(2)模型类Artist如图2.1
图2.1
(3)模型类与数据表的对应关系如图3.1
图3.1
(4)访问Artist数据的语句如图4.1
如图4.1
(5)打断点跟踪到这里发现SQL 语句是这样的:
SELECT
[Extent1].[ArtistId] AS [ArtistId],
[Extent1].[Name] AS [Name]
FROM [dbo].[Artists] AS [Extent1]
(6)明显感觉到不对,我的数据库中从未创建过Artists表。倒是有Artist,继续执行,看到报错了,说没有这个表
(7)再到数据库中确认一下,的确没有。
(8)那么这个表怎么来的呢?为什么会在我的表名基础上莫名其妙的多加了一个"s"呢?先来解决问题,再来分析问题。在模型类Artist的类名称上方加上[Table("Artist")]属性。再次跟踪运行,发现数据表没有了"s",如图8.1
图8.1
语句如下所示:
SELECT
[Extent1].[ArtistId] AS [ArtistId],
[Extent1].[Name] AS [Name]
FROM [dbo].[Artist] AS [Extent1]
到数据库中再次执行,没有问题。
(9)执行也是正常通过的。如图9.1
图9.1