为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕森卡 2018-12-06 12:16:40
大师救命,      我最近在学习MVC3,使用EFcodefirst 过程中,创建了一个类,命名为Person。有ID和Name两个属性,准备运行后让EFcodefirst 自动创建数据库中的Person表, 但是程序运行后,与类名Person对应的表名变成了People, 程序不报错,能运行,数据也一一对应,就是名称不一样。怎么回事啊。 备注:后面把Person这个名字换成了Ren,EFcodefirst 创建的表名也是Ren,就没有错了,但又换回Person后,EFcodefirst 又把表名变成了People。要疯了。 有高手愿意留邮箱吗:我把源代码发给您。
查看完整描述

11 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

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

办法就是合适代码来做Mapping

请看这张图

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

查看完整回答
反对 回复 2019-01-21
?
Qyouu

TA贡献1786条经验 获得超11个赞

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

查看完整回答
反对 回复 2019-01-21
?
茅侃侃

TA贡献1842条经验 获得超21个赞

我是直接建的类。.cs文件,没有edmx文件啊
查看完整回答
反对 回复 2019-01-21
?
holdtom

TA贡献1805条经验 获得超10个赞

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

查看完整回答
反对 回复 2019-01-21
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

Pluralize or singularize...”这个选项在哪里啊?
在EFcodefisrt 里面的哪里选啊,我直接建的类(.cs)文件,用类创建数据库,不是根据数据库创建类时有那个单复数选项,
查看完整回答
反对 回复 2019-01-21
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

Person的复数不是Persons吗
查看完整回答
反对 回复 2019-01-21
?
莫回无

TA贡献1865条经验 获得超7个赞

你需要补习英语了……
查看完整回答
反对 回复 2019-01-21
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

@Gray Zhang: @高高不高:没XX很可怕.
查看完整回答
反对 回复 2019-01-21
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

不能收藏?

查看完整回答
反对 回复 2019-01-21
  • 11 回答
  • 0 关注
  • 453 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信