1.1 拆分实体到多张表

假设你有如下表,如图6-1。Product表用于存储商品的字符类信息,ProductWebInfo用于存储商品的图片,两张表通过SKU关联。现在你想把两张表的信息整合到一个实体类。

entityframework学习笔记--006-表拆分与实体拆分

图6-1

1.2 使用code first 新建如下的poco实体:

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; }
    }

1.3 创建一个继承自DbContext的数据访问类“EF6RecipesContext”

public class EF6RecipesContext : DbContext
    {
        public DbSet<Product> Products { get; set; }
        public EF6RecipesContext()
            : base("name=EF6CodeFirstRecipesContext")
        {
        }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Entity<Product>()
            .Map(m => {
                m.Properties(p => new { p.SKU, p.Description, p.Price });
                m.ToTable("Product");
            })
            .Map(m => {
                m.Properties(p => new { p.SKU, p.ImageURL });
                m.ToTable("ProductWebInfo");
            });
        }
    }

1.4 测试代码:

 1 using (var context = new EF6RecipesContext())
 2             {
 3                 var product = new Product
 4                 {
 5                     SKU = 147,
 6                     Description = "Expandable Hydration Pack",
 7                     Price = 19.97M,
 8                     ImageURL = "/pack147.jpg"
 9                 };
10                 context.Products.Add(product);
11                 product = new Product
12                 {
13                     SKU = 178,
14                     Description = "Rugged Ranger Duffel Bag",
15                     Price = 39.97M,
16                     ImageURL = "/pack178.jpg"
17                 };
18                 context.Products.Add(product);
19                 product = new Product
20                 {
21                     SKU = 186,
22                     Description = "Range Field Pack",
23                     Price = 98.97M,
24                     ImageURL = "/noimage.jp"
25                 };
26                 context.Products.Add(product);
27                 product = new Product
28                 {
29                     SKU = 202,
30                     Description = "Small Deployment Back Pack",
31                     Price = 29.97M,
32                     ImageURL = "/pack202.jpg"
33                 };
34                 context.Products.Add(product);
35                 context.SaveChanges();
36             }
37             using (var context = new EF6RecipesContext())
38             {
39                 foreach (var p in context.Products)
40                 {
41                     Console.WriteLine("{0} {1} {2} {3}", p.SKU, p.Description,
42                     p.Price.ToString("C"), p.ImageURL);
43                 }
44             }
View Code

相关文章:

  • 2022-01-10
  • 2021-08-26
  • 2022-12-23
  • 2022-12-23
  • 2021-05-30
  • 2021-12-24
  • 2022-12-23
  • 2021-06-11
猜你喜欢
  • 2022-02-17
  • 2022-12-23
  • 2021-05-12
  • 2021-05-11
  • 2021-09-20
  • 2022-02-27
相关资源
相似解决方案