【创作赢红包】Entity Framework 6.0 基础知识

文章详细介绍了EF中的实体关系,包括一对一、一对多和多对多关系的示例及代码实现。同时,讨论了如何构建模型,包括排除类型和属性、设置主键、生成值、必需和可选属性、最大长度、并发标记、时间戳以及索引的配置。最后,文章提到了异步查询和保存操作的重要性及其实现方式。

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

一、EF中的实体关系

通过A 和 B表示能更好了解数据中表与表之间的关系:

1.一对一

  • 一对一,表A中每一条记录在表 B 仅有一条数据与其对应;而表B中每一个记录,在表A中只有一条数据与之相对应。

下面用实体框架设计器的概念模型显示学生表 Student 和 学生明细DetailInfo 两个实体一对一的关系:

对应的代码实现:

    public partial class Student
    {
        public int sno { get; set; }

        public string sname { get; set; }

        public int sage { get; set; }
    
        public virtual DetailInfo DetailInfo { get; set; }
    }
    public partial class DetailInfo
    {
        public int sno { get; set; }
        public int phone { get; set; }
        public string address { get; set; }
        public virtual Student Student { get; set; }
    }

2.一对多

  • 一对多,表A中每一条记录在表 B 中,至少有两条数据与之对应;而表B中每一个记录,在表A中只有一条数据与之相对应。

下面用实体框架设计器的概念模型显示学生表 Student 和成绩表 Score 两个实体一对多的关系:

对应的代码实现:

    public partial class Student
    {
        public Student()
        {
            this.Score = new HashSet<Score>();
        }
    
        public int sno { get; set; }

        public string sname { get; set; }

        public int sage { get; set; }
    
        public virtual ICollection<Score> Score { get; set; }
    }
    public partial class Score
    {
        public int sId { get; set; }
        public int score { get; set; }
        public int sno { get; set; }
    
        public virtual Student Student { get; set; }
    }

3.多对多

  • 多对多,表A中每一条记录在表有B中,有多个数据相对应;而表B中每一个记录,在表A中有多条数据与之相对应。

下面用实体框架设计器的概念模型显示学生表 Student 和课程表 Cource 两个实体多对多的关系,通过成绩表 Score 作为两个表的中间桥梁:

对应的代码实现:

    public partial class Student
    {
        public Student()
        {
            this.Score = new HashSet<Score>();
        }
    
        public int sno { get; set; }
        public string sname { get; set; }
        public int sage { get; set; }
        public virtual ICollection<Score> Score { get; set; }
    }
    public partial class Score
    {
        public int sno { get; set; }
        public int cno { get; set; }
        public int score { get; set; }
        public virtual Student Student { get; set; }
        public virtual Cource Cource { get; set; }
    }
    public partial class Cource
    {
        public Cource()
        {
            this.Score = new HashSet<Score>();
        }
    
        public int cno { get; set; }
        public string
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值