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; }
        }
  • 相关阅读:
    第12组 Beta冲刺 (4/5)
    第12组 Beta冲刺 (3/5)
    代码用辅助多了 基础的读取config都忘记了
    wpf 动态添加控件 通过xmal实习 c#代码插入控件
    C#里调用非托管的Dll -z注意 net版本
    动态调用 类库
    c#时间的生成
    c# 第三方 修改版本号 MSBuildTasks, 解决 通配符不匹配问题
    c#.exe以管理员身份运行
    log4
  • 原文地址:https://www.cnblogs.com/zhusk/p/10972546.html
Copyright © 2011-2022 走看看