zoukankan      html  css  js  c++  java
  • EF之Code First设置主外键关系(一)

    指定类外键有注释(DataAnnotation)和FluentAPI两种方式,下面我们主要使用DataAnnotation指定外键关系 
    第一种方式

    //1-指定导航属性,会自动生成外键,命名规则为:“对象名称_主键名”
     public class TUsers
        {
            [Key]
            public int UserId { get; set; }
    
            public string Account { get; set; }
    
            public string Password { get; set; }
    
            public DateTime CreateDate { get; set; }
    
            public List<TUsersRoles> TUsersRolesList { get; set; }
        }
         public class TUsersExtInfo
        {
            [Key]
            public int id { get; set; }
    
            public virtual TUsers Users { get; set; }//生产的外键名称是Users_UserId,格式为"对象名称_主角名称"
        }

    生成的表结构如下:

    第二种方法:

    //2-默认情况下与导航属性的主键名称相同的字段会自动被标记为外键,
    public class TUsers
        {
            [Key]
            public int UserId { get; set; }
    
            public string Account { get; set; }
    
            public string Password { get; set; }
    
            public DateTime CreateDate { get; set; }
        }
         public class TUsersExtInfo
        {
            [Key]
            public int id { get; set; }
    
            public int UserID { get; set; }
            public virtual TUsers Users { get; set; }//如果没有声明TUsers对象,则UserID是一个普通的字段,没有外键关系
        }

    第三种方法:可指定生成的数据库中的列名。

    public class TUsers
        {
            [Key]
            public int UserId { get; set; }
    
            public string Account { get; set; }
    
            public string Password { get; set; }
    
            public DateTime CreateDate { get; set; }
        }
        public class TUsersExtInfo
        {
            [Key]
            public int id { get; set; }
    
            public int TUsers_Id { get; set; }
            [ForeignKey("TUsers_Id")]
            public virtual TUsers Users { get; set; }
        }

    第四种方法:可指定生成的数据库中的列名

    //方式2的升级版,与导航属性的主键名称相同的字段会自动被标记为外键,然后指定字段对应的数据库中的列名
    public class TUsers
        {
            [Key]
            public int UserId { get; set; }
    
            public string Account { get; set; }
    
            public string Password { get; set; }
    
            public DateTime CreateDate { get; set; }
        }
         public class TUsersExtInfo
        {
            [Key]
            public int id { get; set; }
    
            [Column("TUsers_Id")]
            public int UserId { get; set; }
            public virtual TUsers Users { get; set; }
        }
  • 相关阅读:
    BZOJ 1103 Poi2007 大都市meg
    BZOJ 2815 ZJOI2012 灾难
    【bzoj】1046: [HAOI2007]上升序列
    P1168跳房子(焫鷄如我)
    HAIO2017[打酱油的旅行!?]
    [haoi2013]花卉节
    P1298(矩阵切割)DP
    P1216 (list加强版)
    p1219最佳贸易(两边bfs写的)
    p1150[noip2013普及]表达式求值
  • 原文地址:https://www.cnblogs.com/zhusk/p/10972546.html
Copyright © 2011-2022 走看看