Entity Framework表拆分為多個(gè)實(shí)體
概念
表拆分:一個(gè)表拆分成多個(gè)實(shí)體,例如Photograph表,可以拆分為Photograph和PhotographFullImage兩張表。
1、Photograph實(shí)體結(jié)構(gòu):
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>
/// 設(shè)置PhotoId是主鍵 自動(dòng)增長
/// </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通過導(dǎo)航屬性引用PhotographFullImage
/// </summary>
[ForeignKey("PhotoId")]
public virtual PhotographFullImage PhotographFullImage { get; set; }
}
}2、PhotographFullImage實(shí)體結(jié)構(gòu):
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通過導(dǎo)航屬性引用Photograph
/// </summary>
[ForeignKey("PhotoId")]
public virtual Photograph Photograph { get; set; }
}
}3、創(chuàng)建數(shù)據(jù)上下文對(duì)象子類:
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)
{
// 設(shè)置主體
modelBuilder.Entity<Photograph>().HasRequired(p => p.PhotographFullImage).WithRequiredPrincipal(t => t.Photograph);
// 生成同一張表:設(shè)置兩個(gè)實(shí)體有相同的表名
modelBuilder.Entity<Photograph>().ToTable("Photograph");
modelBuilder.Entity<PhotographFullImage>().ToTable("Photograph");
base.OnModelCreating(modelBuilder);
}
}
}4、使用數(shù)據(jù)遷移生成數(shù)據(jù)庫結(jié)構(gòu),查看生成后的結(jié)構(gòu):

5、寫入數(shù)據(jù)
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())
{
// 寫入數(shù)據(jù)
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("創(chuàng)建成功");
Console.ReadKey();
}
}
}6、查詢數(shù)據(jù)

到此這篇關(guān)于Entity Framework表拆分為多個(gè)實(shí)體的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
.NET使用System.Timers.Timer類實(shí)現(xiàn)程序定時(shí)執(zhí)行
這篇文章介紹了.NET使用System.Timers.Timer類實(shí)現(xiàn)程序定時(shí)執(zhí)行的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
asp.net利用cookie保存用戶密碼實(shí)現(xiàn)自動(dòng)登錄的方法
這篇文章主要介紹了asp.net利用cookie保存用戶密碼實(shí)現(xiàn)自動(dòng)登錄的方法,實(shí)例分析了asp.net針對(duì)cookie的創(chuàng)建、提取與銷毀操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01
如何在ASP.NET Core中使用ViewComponent
這篇文章主要介紹了如何在ASP.NET Core中使用ViewComponent,幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下2021-04-04
利用Asp.Net Core的MiddleWare思想如何處理復(fù)雜業(yè)務(wù)流程詳解
這篇文章主要給大家介紹了關(guān)于利用Asp.Net Core的MiddleWare思想如何處理復(fù)雜業(yè)務(wù)流程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起看看吧2018-08-08
.net中string無重復(fù)數(shù)字的實(shí)現(xiàn)方法
今天做項(xiàng)目的時(shí)候,用js獲得了勾選的checkbox放在了hiddenfile里,然而hiddenfile的值變成了類似:“1,1,1,3,3,2,4,5,5,5”,后臺(tái)獲取的時(shí)候,只保留不重復(fù)的數(shù)字,于是想了一想;直接上代碼了。2013-04-04
ASP.NET MVC分頁和排序功能實(shí)現(xiàn)
這篇文章主要介紹了MVC學(xué)習(xí)系列之分頁和排序功能實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07

