本人建议玩code frist的人多用用System.ComponentModel.DataAnnotations和System.ComponentModel.DataAnnotations.Schema这个里面的特性来写实体类

现在进入正题,怎么打破原先外键的命名规则呢

[Table("sys_UserInfo")]
public partial class UserInfo
{
public UserInfo()
{
this.DelFlag = false;
//this.R_UserInfo_Role = new R_UserInfo_Role(); }
[Key]//主键
[Column("ID")]
public int ID { get; set; }
[Column("UName"), StringLength(20)]
public string UName { get; set; }
[Column("Pwd"), StringLength(20)]
public string Pwd { get; set; }
[Column("Phone"), StringLength(40)]
public string Phone { get; set; }
[Column("Mail"), StringLength(40)]
public string Mail { get; set; }
[Column("SubTime")]
public System.DateTime SubTime { get; set; }
[Column("LastModifiedOn")]
public System.DateTime LastModifiedOn { get; set; }
[Column("DelFlag")]
public bool DelFlag { get; set; } [Column("R_RoleID")]//虽然在下面定义,但是可以重名
public int RoleID111 { get; set; }
[ForeignKey("RoleID111")]//指定上面那个是外键的属性
public virtual Role Role { get; set; } }

如同我注释那样,写外键的时候可以利用ForeignKey这个特性指定一个外键的属性,然后指定的那个属性再用Column重命名这个列名。不需要在写映射,而且看的时候也会比较直观,也容易维护。

[Table("sys_Role")]
public partial class Role
{
public Role()
{
this.DelFlag = false;
this.UserInfo = new HashSet<UserInfo>();
}
[Key]//主键
[Column("ID")]
public int ID { get; set; }
[Column("RoleName"), StringLength(20)]
public string RoleName { get; set; }
[Column("DelFlag")]
public bool DelFlag { get; set; }
[Column("SubTime")]
public System.DateTime SubTime { get; set; }
[Column("UserInfoID")]
public virtual ICollection<UserInfo> UserInfo { get; set; }
}

然后是数据库中的生成

EF中外键重命名,打破原先的约束规则的更多相关文章

  1. Alt+Shift+R组合键,用来在一个java文件中批量的重命名变量。

    myeclipse和eclipse集成编译软件,都提供了一个快捷键用来批量重命名变量:Alt+Shift+R组合键,用来在一个java文件中批量的重命名变量.扩展知识:如果想要重命名文件名,又不想手动 ...

  2. win10用户文件夹重命名,启用administrator账户,删除文件夹时提示找不到该项目

    这一切都源自楼主洁癖一般的强迫症. 楼主在重置win10后的安装过程中用microsoft账户登录的电脑,发现用户文件夹名称怪怪的,于是想重命名一下.楼主发现重命名用户文件夹并不能简单地用F2搞定,于 ...

  3. 【Java EE 学习 22 上】【文件上传】【目录打散】【文件重命名】

    1.文件上传概述 (1)使用<input type="file">的方式来声明一个文件域. (2)表单提交方式一定要是post方式才行 (3)表单属性enctype 默 ...

  4. MyEclipse中的重命名

    我们要重命名一个函数或变量时,如果手工改会很耗时而且可能会有些遗漏,造成编译错误.这个时候可以在变量或函数定义处,按下MyEclipse的Alter + SHIF + R 重命名,然后按下Enter键 ...

  5. iOS项目的完整重命名方法图文教程

    原文链接:http://www.cocoachina.com/ios/20150104/10824.html iOS项目的完整重命名方法图文教程 前言:在iOS开发中,有时候想改一下项目的名字,都会遇 ...

  6. java package 重命名时注意事项

    如果要对包重命名时,需要关注以下方面: 1. java关联类里的重命名(这个一般通过开发工具会自动修正,如eclipse) 2.配置文件,如原先配置为com.abc,现在更名为com.abc123,这 ...

  7. (转)Windows重启延迟删除,重命名技术原理

    所谓重启延迟删除技术,就是在操作系统启动前删除或者替换文件! 说起重启延迟删除,大家可能都很陌生,但是实际上,该功能已经被各种软件所采用:如安装Windows 补丁程序(如:HotFix.Servic ...

  8. SQL Server使用sp_rename重命名约束注意事项

    在SQL Server中,我们可以使用sp_name这个系统存储过程重命名数据库中对象的名称. 此对象可以是表. 索引. 列. 别名,约束等数据类型(具体可以参考官方文档).上周在使用这个函数重构数据 ...

  9. Linux编程 5 (目录重命名与移动mv,删除文件rm,目录创建mkdir删除rmdir,查看file,cat,more,tail,head)

    一. 文件重命名与移动(mv) 在linux中,重命名文件称为移动(moving).mv命令可以将文件和目录移动到另一个位置或重新命名. 1.1 使用mv重命名 下面在/usr/local下面创建一个 ...

随机推荐

  1. 【网络与系统安全】20179209 利用metasploit对windows系统的渗透

    这次实验的主角是素有"内网杀手"之称的metasploit.还是少说一些夸赞它的话(因为即使功能再强大,不明白它的原理,不会灵活使用它集成的功能,一样没有用),我们直入主题.简单说 ...

  2. 【题解】 CF11D A Simple Task

    [题解] CF11D A Simple Task 传送门 \(n \le 20\) 考虑状态压缩\(dp\). 考虑状态,\(dp(i,j,O)\)表示从\(i\)到\(j\)经过点集\(O\)的路径 ...

  3. 【iOS开发-63】Unknown type name &quot;CGRect&quot;,did you mean &quot;Rect&quot;?的解决方式

    出现这个问题的童鞋,差点儿都是由于用了Xcode6. 原因:在Xcode6之前,创建的文件系统会自己主动为用户导入Foundation.h和UIKit.h文件,可是最新的Xcode6仅仅为用户导入了F ...

  4. winserver 资源下载

    http://msdn.itellyou.cn/  下载各种系统资源,支持迅雷下载,速度杠杠的

  5. Pentaho BIServer Community Edtion 6.1 使用教程 第四篇 安装和使用Saiku 插件 进行 OLAP

    OLAP(On-Line Analytical Processing,联机分析处理)是一个使分析师.管理者和执行者从原始数据中用来快速.一致.交互访问的一种软件技术,从而真实的反映企业的数据情况.OL ...

  6. Java for LeetCode 128 Longest Consecutive Sequence

    Given an unsorted array of integers, find the length of the longest consecutive elements sequence. F ...

  7. LeetCode:删除链表中的节点【203】

    LeetCode:删除链表中的节点[203] 题目描述 删除链表中等于给定值 val 的所有节点. 示例: 输入: 1->2->6->3->4->5->6, val ...

  8. 《CSS权威指南(第三版)》---第六章 文本属性

    本章主要的内容是: 1.文本缩进: text-indent.行内元素无法缩进,一般用左内边距或外边距来创造这种效果. 2.文本对齐:text-align .只应用于块状元素. 3.行高:一般line- ...

  9. shell将字符串转换为大写变量并将小写作为变量值

    group_name='a b c d e f g' for a in $group_name; do typeset -u a ; echo "$a='$(echo $a | tr '[A ...

  10. mooc_java 集合框架上 学生所选课程

    用一个集合Set存放学生所选课程接口不能实例化,所以用其实现类进行实例化 set接口不能实例化,通过HashSet这个实现类来进行实例化,需要导入包this.courses=new HashSet() ...