分割一个表到多个实体

声明方式

 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>

运行效果

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

 

你可能感兴趣的:(framework)