猿问

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

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

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

慕森卡
浏览 454回答 11
11回答

ibeautiful

根据ScottGu给的博客,这个叫命名约定,因为通常数据库的表命名是复数的,类的命名是单数的,因此有这一个“默认命名约定”,因为CodeFirst没有edmx文件,所以也没得设 办法就是合适代码来做Mapping 请看这张图 看OnModelCreating里的话,可以映射到不同的表,当然我没用过,不知道是不是这样可以导致创建数据库时也正确,你可以试一下

Qyouu

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

茅侃侃

我是直接建的类。.cs文件,没有edmx文件啊

holdtom

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

qq_笑_17

Pluralize or singularize...”这个选项在哪里啊?在EFcodefisrt 里面的哪里选啊,我直接建的类(.cs)文件,用类创建数据库,不是根据数据库创建类时有那个单复数选项,

开心每一天1111

Person的复数不是Persons吗

莫回无

你需要补习英语了……

慕莱坞森

@Gray Zhang: @高高不高:没XX很可怕.

米琪卡哇伊

不能收藏?
随时随地看视频慕课网APP
我要回答