zoukankan      html  css  js  c++  java
  • EF中外键重命名,打破原先的约束规则

    本人建议玩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; }
        }
    

     然后是数据库中的生成

  • 相关阅读:
    70.BOM
    69.捕获错误try catch
    68.键盘事件
    523. Continuous Subarray Sum
    901. Online Stock Span
    547. Friend Circles
    162. Find Peak Element
    1008. Construct Binary Search Tree from Preorder Traversal
    889. Construct Binary Tree from Preorder and Postorder Traversal
    106. Construct Binary Tree from Inorder and Postorder Traversal
  • 原文地址:https://www.cnblogs.com/RainbowInTheSky/p/4473928.html
Copyright © 2011-2022 走看看