zoukankan      html  css  js  c++  java
  • Code First 指定外键名称

    指定类外键有注释(DataAnnotation)和FluentAPI两种方式,

    目前掌握的知识我们先把DataAnnotation可用的四种方式总结如下

    第一种方法:

    //1-指定导航属性,会自动生成外键,命名规则为:“表名_主键名”
    //这种方式兼容性非常好,稍后需要总结的关于一个类中出现两个或者多个相同类属性的时候就使用的这种方式,而下面的第三种方式就不成功,会出现错误,具体细节在下一篇博客中介绍
    
        public class User
        {
           //[Key]
            public int UserID { get; set; }
    
            public string Name { get; set; }
        }
    
        public class UserExtInfo
        {
            public int UserExtInfoID { get; set; }
            //1-生成外键:User_UserID
            public virtual User User { get; set; }
    
        }

    第二种方法:

    //2-默认情况下与导航属性的主键名称相同的字段会自动被标记为外键,
    
        public class User
        {
            public int UserID { get; set; }
    
            public string Name { get; set; }
        }
    
        public class UserExtInfo
        {
            //2-生成外键:UserID
            public int UserID { get; set; }
            public virtual User User { get; set; }
     }
        }

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

    //3-通过[ForeignKey]标记指定实体类的属性为外键,
        public class User
        {
            public int UserID { get; set; }
    
            public string Name { get; set; }
        }
    
        public class UserExtInfo
        {
            //3-生成外键:F_UserID
            public int F_UserID { get; set; }
            [ForeignKey("F_UserID")]
            public virtual User User { get; set; }
        }

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

    //方式2的升级版,与导航属性的主键名称相同的字段会自动被标记为外键,然后指定字段对应的数据库中的列名
      public class User
        {
            public int UserID { get; set; }
    
            public string Name { get; set; }
        }
    
        public class UserExtInfo
        {
            //4-生成外键:F_UserID
            [Column("F_UserID")]
            public int UserID { get; set; }
            public virtual User User { get; set; }
        }

    FluentAPI的方法等待补充----------------------

  • 相关阅读:
    数论&数学中结论证明
    「Uva11401」数三角形
    「CJOJ2725」Wave
    「CJOJ2724」Number
    「CJOJ2723」Reserve
    「CJOJ2722」Ping
    「CJOJ2573」Snake vs Block
    「CJOJ2574」Lucky Transformati
    「CJOJ2721」取石块儿
    「CJOJ2366」机器人采集金属
  • 原文地址:https://www.cnblogs.com/farcall/p/4850259.html
Copyright © 2011-2022 走看看