ASP.NET Entity Framework 查询数据表多个"s"的解决方法。

来源:互联网 发布:天盾数据恢复中心 编辑:程序博客网 时间:2024/05/22 10:41

解决方法:在查询的模型类的类名上方加上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



0 0