18.C#:VS2010之EF框架添加edmx(自动跟踪实体生成器):映射到数据库表和代码实体类

在上一篇文章添加好EF数据库模型的基础上,为了生成表结构对应的标准类,使用自动跟踪实体生成器,这里主要记录文件命名注意事项

1.双击.edmx文件,在界面的空白处鼠标右击,选中“添加代码生成项”,选择“ADO.NET自跟踪实体生成器”,会生成两个.tt文件


2.注意:其中没有包含Context字符串的那个文件命名一定要注意,必须命名为有.edmx后缀的文件名+Entites.tt,比如.edmx为ABC.edmx,则此.tt文件的完整文件名为:ABC.Entities.tt,否则无法生成正确标准类文件


3.edmx的属性调整(双击文件打开,单击空白处就可出现):数据库生成工作流改为:Generate Oracle Via T4(TPT).xaml(VS);命名空间必须改为与项目一致或者与edmx所在的文件夹中的.cs文件的命名空间一致;DDL生成模板也要改为:SSDLToOracle(VS);保存时转换相关的文本模板:TRUE;应用延时加载:FALSE;生成时验证:FALSE


4.生成之后,必须更改.tt文件的配置格式为标准类格式,这个地方是用代码控制的,也就是说需要双击ABC.Entities.tt,打开文件,将里面的代码修改为可以显示为简单类格式


5.这样做的目的在于可以像看到自定义标准类那样看到表结构对应的实体类,在大型项目中会让层次更加清


新增映射关系注意事项:

1. 如果要在数据库中添加表后使用,则必须先更新edmx和数据库的映射

1)从数据库更新模型:右击edmx,打开模型浏览器,任意一个映射实体或者顶层edmx上右击后选择“从数据库更新模型”,然后连接(连不上则多连几次,原因可能是安全性验证问题),“新增”中选择表,确定即可

2)修改表格对应实体名:这时从数据库映射过来的实体名称就是原表格名称,需要更改为所需要的实体名:右击项目中的edmx,选择使用XML格式打开(右击打开方式可以看到),搜索数据库的原表名,全部替换为所需要修改的实体名;然后用“模型浏览器”,找到映射实体名,在属性中修改为需要的名称(右击可以看到属性)

3)修改表格字段映射过来的实体属性名:直接映射过来的字段全部是大写的,这里修改为每个单词首字母大写:可以用“模型浏览器”(双击打开的默认方式),找到对应映射实体(此时实体名和表名是一样的,这里也可以在属性中修改实体名),点击下拉字段,点击字段,到属性里面去修改。然后右击edmx,选择“运行自定义工具”,即可生效。如果先以XML形式打开修改了之后,还是得以默认方式打开再次修改,没有这个必要。

4)生效:右击xxx.edmx下面的xxx.Entiies.tt文件(xxx是文件名),选择“运行自定义工具”即可(必须步骤

注意:1.如果碰到数据库表的字段和映射的实体的属性类型不一致,只能找到对应映射实体,右击选择“属性”,到属性里面去修改,只能在属性中修改字段类型,不可以直接在下面的映射关系里面修改

            2. 如果出现一些表名命名错误,比如BatchSpecialTypeImport写成了BatchSpecialTypeImport1,在edmx里面已经修改正确了还是报错,可能就是没有重新运行xxx.Entities.tt文件的运行自定义工具,导致xxx.Entities.tt的子目录xxx.Context.cs没有正确修改

            3.如果运行了xxx.Entiies.tt自定义工具后属性名还是没有智能提示为小写,则可以先关闭.tt文件,打开其下拉对应的实体类,再关闭,再多运行两次xxx.Entiies.tt就可以了(可能是vs反应没那么快)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值