Entity Framework表拆分为多个实体

2022-04-17 09:02:47

概念

表拆分:一个表拆分成多个实体,例如Photograph表,可以拆分为Photograph和PhotographFullImage两张表。

1、Photograph实体结构:

using System;using System.Collections.Generic;using System.ComponentModel.DataAnnotations;using System.ComponentModel.DataAnnotations.Schema;using System.Linq;using System.Text;using System.Threading.Tasks;namespace CodeFirstTableSplit.Model{    /// <summary>    /// 缩略图类    /// </summary>    public class Photograph    {        /// <summary>        /// 设置PhotoId是主键 自动增长        /// </summary>        [Key]        [DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)]        public int PhotoId { get; set; }        public string Title { get; set; }        /// <summary>        /// 缩略图        /// </summary>        public byte[] ThumbnailBite { get; set; }        /// <summary>        /// Photograph通过导航属性引用PhotographFullImage        /// </summary>        [ForeignKey("PhotoId")]        public virtual PhotographFullImage PhotographFullImage { get; set; }    }}

 2、PhotographFullImage实体结构:

using System;using System.Collections.Generic;using System.ComponentModel.DataAnnotations;using System.ComponentModel.DataAnnotations.Schema;using System.Linq;using System.Text;using System.Threading.Tasks;namespace CodeFirstTableSplit.Model{    public class PhotographFullImage    {        [Key]        public int PhotoId { get; set; }        /// <summary>        /// 高分辨率        /// </summary>        public byte[] HighResolutionBits { get; set; }        /// <summary>        /// PhotographFullImage通过导航属性引用Photograph        /// </summary>        [ForeignKey("PhotoId")]        public virtual Photograph Photograph { get; set; }    }}

 3、创建数据上下文对象子类:

using CodeFirstTableSplit.Model;using System;using System.Collections.Generic;using System.Data.Entity;using System.Linq;using System.Text;using System.Threading.Tasks;namespace CodeFirstTableSplit.DatabaseContext{    public class EFDbContext :DbContext    {        public EFDbContext()            : base("name=Default")        { }        public DbSet<Photograph> Photographs { get; set; }        public DbSet<PhotographFullImage> PhotographFullImages { get; set; }        protected override void OnModelCreating(DbModelBuilder modelBuilder)        {            // 设置主体            modelBuilder.Entity<Photograph>().HasRequired(p => p.PhotographFullImage).WithRequiredPrincipal(t => t.Photograph);            // 生成同一张表:设置两个实体有相同的表名            modelBuilder.Entity<Photograph>().ToTable("Photograph");            modelBuilder.Entity<PhotographFullImage>().ToTable("Photograph");            base.OnModelCreating(modelBuilder);        }    }}

 4、使用数据迁移生成数据库结构,查看生成后的结构:

Console.ReadKey(); } }}

 6、查询数据

Entity Framework表拆分为多个实体

到此这篇关于Entity Framework表拆分为多个实体的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。