Entity Framework實體拆分多個表
一、概念
實體拆分:一個實體拆分成多個表,如Product實體,可以拆分成Product和ProductWebInfo兩個表,Product表用於存儲商品的字符類信息,ProductWebInfo用於存儲商品的圖片信息,兩張表通過SKU進行關聯。
1、Product實體類結構:
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 實體拆分.Model { public class Product { [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] //設置主鍵需要自己填充 public int SKU { get; set; } public string Description { get; set; } public decimal Price { get; set; } public string ImageURL { get; set; } } }
2、數據實體類結構:
using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Text; using System.Threading.Tasks; using 實體拆分.Model; namespace 實體拆分.DatabaseContext { public class EFDbContext :DbContext { public EFDbContext() : base("name=Default") { } public DbSet<Product> Products { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Product>().Map(p => { p.Properties(m => new { m.SKU, m.Price, m.Description }); p.ToTable("Product"); }) .Map(p => { p.Properties(m => new { m.SKU, m.ImageURL }); p.ToTable("ProductWebInfo"); }); base.OnModelCreating(modelBuilder); } } }
3、使用數據遷移生成數據庫,生成後的表結構如下圖所示:
4、測試數據:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using 實體拆分.DatabaseContext; namespace 實體拆分 { class Program { static void Main(string[] args) { using (var context = new EFDbContext()) { context.Products.Add(new Model.Product() { SKU=293, Description="C#高級編程(第10版)", Price=299 , ImageURL="http://image.baidu.com/1.jpg" }); // 保存 context.SaveChanges(); } Console.WriteLine("創建成功"); Console.ReadKey(); } } }
5、運行程序,查詢數據庫結果
總結
將實體拆分成多表的步驟:
1、在工程中創建一個新類繼承自DbContext類。
2、創建Product的POCO類。
3、在新創建的DbContext子類中添加屬性:DbSet<Product>。
4、重寫DbContext類的OnModelCreating()方法。
點此下載示例代碼
到此這篇關於Entity Framework實體拆分多個表的文章就介紹到這瞭。希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Entity Framework使用DbModelBuilder API創建表結構
- Entity Framework管理一對一實體關系
- Entity Framework管理一對二實體關系
- Entity Framework表拆分為多個實體
- Entity Framework使用配置夥伴創建數據庫