首页 > 代码库 > 分割一个表到多个实体<EntityFramework6.0>

分割一个表到多个实体<EntityFramework6.0>

声明方式

 public class Photograph    {        [Key]        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]        public int PhotoId { get; set; }        public string Title { get; set; }        public byte[] ThumbnailBits { get; set; }        [ForeignKey("PhotoId")]        public virtual PhotographFullImage PhotographFullImage { get; set; }    }    public class PhotographFullImage    {        [Key]        public int PhotoId { get; set; }        public byte[] HighResolutionBits { get; set; }        [ForeignKey("PhotoId")]        public virtual Photograph Photograph { get; set; }    }    public class PhotoContext : DbContext    {        public DbSet<Photograph> Photographs { get; set; }        public DbSet<PhotographFullImage> PhotographFullImages { get; set; }        protected override void OnModelCreating(DbModelBuilder modelBuilder)        {            base.OnModelCreating(modelBuilder);            modelBuilder.Entity<Photograph>()                //配置必需关系。 数据库中的外键不可为 null否则无法保存到数据库。                .HasRequired(p => p.PhotographFullImage)                //作为关系目标的主体类型将成为依赖对象,且包含主体的外键                .WithRequiredPrincipal(p => p.Photograph);                           modelBuilder.Entity<Photograph>().ToTable("Table1");            modelBuilder.Entity<PhotographFullImage>().ToTable("Table2");        }    }

怎么使用

  static void Main(string[] args)        {            var thumbBits = new byte[100];            var fullBits = new byte[2000];            using (var context = new PhotoContext())            {                var photo = new Photograph                {                    Title = "小狗",                    ThumbnailBits = thumbBits                };                var fullImage = new PhotographFullImage { HighResolutionBits = fullBits };                photo.PhotographFullImage = fullImage;                context.Photographs.Add(photo);                context.SaveChanges();            }            using (var context = new PhotoContext())            {                foreach (var photo in context.Photographs)                {                    Console.WriteLine("照片: {0}, 压缩 {1} bytes",                    photo.Title, photo.ThumbnailBits.Length);                    // 显式地加载了“昂贵”的实体                    context.Entry(photo).Reference(p => p.PhotographFullImage).Load();                    Console.WriteLine("原始: {0} bytes",                    photo.PhotographFullImage.HighResolutionBits.Length);                }                Console.ReadKey();            }         }

生成实体结构

运行效果

 

分割一个表到多个实体<EntityFramework6.0>