首页 新闻 会员 周边

大师救命,使用EFcodefirst 过程中,出现匪夷所思的事情。EFcodefirst 在数据库中创建的表名和类的名字不一样。

0
悬赏园豆:20 [已解决问题] 解决于 2011-03-05 17:49

大师救命,
      我最近在学习MVC3,使用EFcodefirst 过程中,创建了一个类,命名为Person。有ID和Name两个属性,准备运行后让EFcodefirst 自动创建数据库中的Person表,
 
但是程序运行后,与类名Person对应的表名变成了People,
 
程序不报错,能运行,数据也一一对应,就是名称不一样。怎么回事啊。
 
备注:后面把Person这个名字换成了Ren,EFcodefirst 创建的表名也是Ren,就没有错了,但又换回Person后,EFcodefirst 又把表名变成了People。
要疯了。

有高手愿意留邮箱吗:我把源代码发给您。

高高不高的主页 高高不高 | 初学一级 | 园豆:170
提问于:2011-03-04 21:29
< >
分享
最佳答案
0

根据ScottGu给的博客,这个叫命名约定,因为通常数据库的表命名是复数的,类的命名是单数的,因此有这一个“默认命名约定”,因为CodeFirst没有edmx文件,所以也没得设

办法就是合适代码来做Mapping

请看这张图

看OnModelCreating里的话,可以映射到不同的表,当然我没用过,不知道是不是这样可以导致创建数据库时也正确,你可以试一下

收获园豆:10
Gray Zhang | 专家六级 |园豆:17610 | 2011-03-05 00:09
好的有空试试
高高不高 | 园豆:170 (初学一级) | 2011-03-05 12:06
问题是他自己创建的时候怎么把person的类名创建为People表了,我也没有设置啊
高高不高 | 园豆:170 (初学一级) | 2011-03-05 12:13
应该就是单复数的问题
高高不高 | 园豆:170 (初学一级) | 2011-03-05 17:50
其他回答(3)
0

你可以看一下模型edmx文件设置,有个复数的属性,设置为false就行了

收获园豆:5
2012 | 园豆:21230 (高人七级) | 2011-03-04 21:47
推荐你看这本书 http://www.ppurl.com/2010/03/pro-entity-framework-4-0.html
支持(0) 反对(0) 2012 | 园豆:21230 (高人七级) | 2011-03-04 21:51
我是直接建的类。.cs文件,没有edmx文件啊
支持(0) 反对(0) 高高不高 | 园豆:170 (初学一级) | 2011-03-05 12:04
0

Person的复数People,源于你选择可“Pluralize or singularize...”

收获园豆:5
Artech | 园豆:287 (菜鸟二级) | 2011-03-05 10:38
Pluralize or singularize...”这个选项在哪里啊?
在EFcodefisrt 里面的哪里选啊,我直接建的类(.cs)文件,用类创建数据库,不是根据数据库创建类时有那个单复数选项,
支持(0) 反对(0) 高高不高 | 园豆:170 (初学一级) | 2011-03-05 12:09
Person的复数不是Persons吗
支持(0) 反对(0) 高高不高 | 园豆:170 (初学一级) | 2011-03-05 12:12
你需要补习英语了……
支持(0) 反对(0) Gray Zhang | 园豆:17610 (专家六级) | 2011-03-05 13:54
@Gray Zhang: @高高不高:没XX很可怕.
支持(0) 反对(0) ~洛书~ | 园豆:333 (菜鸟二级) | 2011-03-08 00:15
0

不能收藏?

jAmEs_ | 园豆:202 (菜鸟二级) | 2013-01-20 17:20

自己后面再发现,其实可以在类增加[Table("Ren")]属性

支持(0) 反对(0) jAmEs_ | 园豆:202 (菜鸟二级) | 2013-01-20 17:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册