EF之Code First设置主外键关系(一)

本文介绍了使用Entity Framework Code First通过DataAnnotation和FluentAPI设置主外键关系的四种方法,包括如何指定数据库中外键列的名称。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指定类外键有注释(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; }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值