Entity|Entity Framework表拆分为多个实体

概念 表拆分:一个表拆分成多个实体,例如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{/// /// 缩略图类/// public class Photograph{/// /// 设置PhotoId是主键 自动增长/// [Key][DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)]public int PhotoId { get; set; }public string Title { get; set; }/// /// 缩略图/// public byte[] ThumbnailBite { get; set; }/// /// Photograph通过导航属性引用PhotographFullImage/// [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; }/// /// 高分辨率/// public byte[] HighResolutionBits { get; set; }/// /// PhotographFullImage通过导航属性引用Photograph/// [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【Entity|Entity Framework表拆分为多个实体】 Photographs { get; set; }public DbSet PhotographFullImages { get; set; }protected override void OnModelCreating(DbModelBuilder modelBuilder){// 设置主体modelBuilder.Entity().HasRequired(p => p.PhotographFullImage).WithRequiredPrincipal(t => t.Photograph); // 生成同一张表:设置两个实体有相同的表名modelBuilder.Entity().ToTable("Photograph"); modelBuilder.Entity().ToTable("Photograph"); base.OnModelCreating(modelBuilder); }}}

4、使用数据迁移生成数据库结构,查看生成后的结构:
Entity|Entity Framework表拆分为多个实体
文章图片

5、写入数据
using CodeFirstTableSplit.DatabaseContext; using CodeFirstTableSplit.Model; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CodeFirstTableSplit{class Program{static void Main(string[] args){using (var context = new EFDbContext()){// 写入数据byte[] thumbBits = new byte[100]; byte[] fullBits = new byte[2000]; var photo = new Photograph() { Title = "李四", ThumbnailBite = thumbBits }; var fullImage = new PhotographFullImage() { HighResolutionBits = fullBits }; photo.PhotographFullImage = fullImage; context.Photographs.Add(photo); // 保存context.SaveChanges(); }Console.WriteLine("创建成功"); Console.ReadKey(); }}}

6、查询数据
Entity|Entity Framework表拆分为多个实体
文章图片

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

    推荐阅读