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的方法等待补充----------------------

  • 相关阅读:
    tar解压包的时候出现错误 gzip: stdin: not in gzip format
    解决Ubuntu刚装好的时候su命令密码错误的问题
    如何将Ubuntu左边的面板放到底部
    解决VMware安装Ubuntu的过程中窗口过小无法看到按钮的问题
    无法对视图创建索引,因为该视图未绑定到架构
    Matlab当中size() length()等函数讲解
    解决Matlab当中for循环运行慢的问题
    SqlServer如何获取存储过程的返回值
    Linux的五个查找命令
    linux安装redis官方教程
  • 原文地址:https://www.cnblogs.com/farcall/p/4850259.html
Copyright © 2011-2022 走看看