• 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; }
        }
  • 相关阅读:
    UIView用户事件响应
    登录模块之静态登录
    对C# 中Readonly的再认识
    [Android学习笔记4]四大应用组件之一:Service 上
    修改XPMenu让ToolButton在Down=True时正确显示
    通过程序预览Office文档
    发掘ListBox的潜力(三):显示即时提示(Tips)
    从网络上下载文件的两种方法
    解决窗体闪烁问题的方法
    C/C++中动态链接库的创建和调用
  • 原文地址:https://www.cnblogs.com/zhusk/p/10972546.html
Copyright © 2020-2023  润新知