EF db first 从数据库生成模型时如何修改映射的表名

沙漏dan 2017-05-03 09:35:19
使用的是 ADO.NET实体数据模型,可以从数据库生成模型,但是想问一下如何修改映射的实体类名
比如说,我数据库表名是tb_firstclass,希望映射成FirstClass
表名是tb_secondclass,希望映射成SecondClass
请问哪位大神知道怎么做,求指点
...全文
1153 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
沙漏dan 2017-05-19
  • 打赏
  • 举报
回复
谢谢回答,最终也没有找到合适的方法,设计器界面下可以改,但是有很多个表
风淡云清2013 2017-05-07
  • 打赏
  • 举报
回复
设计器界面下可以直接修改
沙漏dan 2017-05-04
  • 打赏
  • 举报
回复
引用 18 楼 qq_36291408 的回复:
dbfirst的维护成本太高了,容易出一些奇特的问题
主要是我现在需要这么改
x80819092 2017-05-04
  • 打赏
  • 举报
回复
dbfirst的维护成本太高了,容易出一些奇特的问题
沙漏dan 2017-05-04
  • 打赏
  • 举报
回复
引用 15 楼 hanjun0612 的回复:
不过我建议你还是采用 code first的方式。因为dbfirst的话,即使你增加了Column属性。 但是当你数据库改动,我们一般都会删除原来的edmx,然后重新创建。这会导致,你之前的Column属性都没了。
这个主要是基本别的地方都是好的,数据库由mysql切换成了sql server,所以我需要重新生成这个emdx文件,原来的实体类名在很多地方有用到,我就想着可以在生成的时候哪里可以改变映射方式,使得这个生成的实体类名也可以改变
x80819092 2017-05-04
  • 打赏
  • 举报
回复
你这样没什么意义,只是增加了复杂度罢了
正怒月神 版主 2017-05-04
  • 打赏
  • 举报
回复
不过我建议你还是采用 code first的方式。因为dbfirst的话,即使你增加了Column属性。 但是当你数据库改动,我们一般都会删除原来的edmx,然后重新创建。这会导致,你之前的Column属性都没了。
沙漏dan 2017-05-04
  • 打赏
  • 举报
回复
引用 12 楼 xiaojie_cp 的回复:
用vs打开你的实体数据模型,选择一个表,右键,更改“实体集名称”即可。
foreach(var p in db.DataList)
            {
                Response.Write(string.Format("{0}<br>", p.ClassID));
            }
这种方法是要一个表一个表改的是么
正怒月神 版主 2017-05-04
  • 打赏
  • 举报
回复
引用 11 楼 sxllllwd 的回复:
那我现在是需要把我的类名一个个都改了,然后对应上表名是么
[Column("UserName")] 就是表的列名。 public string UserName222 就是你需要映射的实体属性。UserName222随便你怎么改
lovebaby 2017-05-04
  • 打赏
  • 举报
回复

用vs打开你的实体数据模型,选择一个表,右键,更改“实体集名称”即可。
foreach(var p in db.DataList)
{
Response.Write(string.Format("{0}<br>", p.ClassID));
}
沙漏dan 2017-05-04
  • 打赏
  • 举报
回复
引用 10 楼 hanjun0612 的回复:
[quote=引用 9 楼 sxllllwd 的回复:] [quote=引用 7 楼 hanjun0612 的回复:]

属性重命名
[Column("UserName")]
public string UserName222
谢谢回答,但是和我需要的是反的,我现在数据库表名ok,希望实体类名改变[/quote] 就是这个意思。。。UserName222是你自定义的属性,映射到数据库是 UserName[/quote] 那我现在是需要把我的类名一个个都改了,然后对应上表名是么
正怒月神 版主 2017-05-04
  • 打赏
  • 举报
回复
引用 9 楼 sxllllwd 的回复:
[quote=引用 7 楼 hanjun0612 的回复:]

属性重命名
[Column("UserName")]
public string UserName222
谢谢回答,但是和我需要的是反的,我现在数据库表名ok,希望实体类名改变[/quote] 就是这个意思。。。UserName222是你自定义的属性,映射到数据库是 UserName
沙漏dan 2017-05-04
  • 打赏
  • 举报
回复
引用 7 楼 hanjun0612 的回复:

属性重命名
[Column("UserName")]
public string UserName222
谢谢回答,但是和我需要的是反的,我现在数据库表名ok,希望实体类名改变
沙漏dan 2017-05-04
  • 打赏
  • 举报
回复
引用 6 楼 qq_36291408 的回复:
在生成的model类上面加data annotation [Table("SecondClass")],然后生成一下migration,update database,表明就会变了
但是我现在表名不需要改,需要改的是实体类名,这种是改表名了。我的数据库表是xxx_firstclass,我希望生成实体类名是FirstClass这样,这种方法实现的效果是反的
正怒月神 版主 2017-05-04
  • 打赏
  • 举报
回复

属性重命名
[Column("UserName")]
public string UserName222
x80819092 2017-05-04
  • 打赏
  • 举报
回复
在生成的model类上面加data annotation [Table("SecondClass")],然后生成一下migration,update database,表明就会变了
沙漏dan 2017-05-04
  • 打赏
  • 举报
回复
引用 4 楼 qq_36291408 的回复:
ef 6和core都可以code first 用现有的数据库
我用了来自数据库的code first,生成的实体类名仍然是相同的,没有发现哪里可以设置这个相应的修改,请问需要怎么做呢
x80819092 2017-05-04
  • 打赏
  • 举报
回复
ef 6和core都可以code first 用现有的数据库
沙漏dan 2017-05-04
  • 打赏
  • 举报
回复
引用 1 楼 qq_36291408 的回复:
可以用code first with existing database ,在nuget console里输入 Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models 对应你的db,就能转成对应的类,类名和你要求的一样
这个我查了一下好像是用EF7的么,项目还是EF6的,这个不行
x80819092 2017-05-03
  • 打赏
  • 举报
回复
ef core已经不支持dbfirst了,最好适应code first,比dbfirst好得多
加载更多回复(1)

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧