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、使用数据迁移生成数据库结构,查看生成后的结构:
文章图片
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 Framework表拆分为多个实体的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- Entity|Entity Framework管理一对一实体关系
- Entity|Entity Framework管理一对二实体关系
- Entity|Entity Framework实体拆分多个表
- Entity|Entity Framework实现数据迁移
- Entity|Entity Framework常用查询语句
- 2022 | Android大厂面试必问之FrameWork——Binder、Handler、WMS、AMS核心原理解析!
- Unity3D|【游戏开发高阶】从零到一教你Unity使用ToLua实现热更新(含Demo工程 | LuaFramework | 增量 | HotUpdate)
- Entity|Entity Framework Core中执行SQL语句和存储过程的方法介绍
- Entity|Entity Framework Core实现Like查询详解
- Entity|Entity Framework Core批处理SQL语句