Entity Framework实体拆分多个表

 更新时间:2022年03月07日 11:05:42   作者:.NET开发菜鸟  
这篇文章介绍了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实体拆分多个表的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • web.config中配置数据库连接的方式

    web.config中配置数据库连接的方式

    Web.config文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。本文主要介绍web.config中配置数据库连接的两种方式,一起来看。
    2015-10-10
  • Jwt通过源码揭秘隐藏大坑

    Jwt通过源码揭秘隐藏大坑

    今天分享一下在使用JWT在项目中遇到的一个问题,主要是一个协议的细节,非常容易被忽略,如果不是自己遇到,或者去看源码的实现,我估计至少80%的人都会栽在这里,下面来还原一下这个问题的过程,由于这个问题出现有一定的概率,不是每次都会出现,所以才容易掉坑里
    2022-05-05
  • Asp.NetCore3.1开源项目升级为.Net6.0的方法实现

    Asp.NetCore3.1开源项目升级为.Net6.0的方法实现

    自从.Net6.0出来后,一直想之前开发的项目升级.Net6.0,本文就详细的介绍一下如何将Asp.NetCore3.1开源项目升级为.Net6.0,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Asp.net GridView使用大全(分页实现)

    Asp.net GridView使用大全(分页实现)

    关于GridView的使用涉及很多,网络上零零散散的有一些,为了让自己使用方便,也为了大家能很好的学习与工作,我把网络上的GridView使用方法收集了一些
    2013-04-04
  • c# .net 生成图片验证码的代码

    c# .net 生成图片验证码的代码

    c# .net 生成图片验证码的代码...
    2007-03-03
  • ABP入门系列之Json格式化

    ABP入门系列之Json格式化

    ,JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。本文重点给大家介绍ABP入门系列之Json格式化,需要的朋友可以参考下
    2017-03-03
  • .Net Core实现选择数据热更新让服务感知配置的变化

    .Net Core实现选择数据热更新让服务感知配置的变化

    这篇文章主要介绍了.Net Core实现选择数据热更新让服务感知配置的变化,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • ASP.NET Core中Razor页面与MVC区别介绍

    ASP.NET Core中Razor页面与MVC区别介绍

    这篇文章介绍了ASP.NET Core中Razor页面与MVC的区别,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • .NET Core 反射底层原理解析

    .NET Core 反射底层原理解析

    本文介绍了.NET中的反射机制,包括前期绑定(EarlyBinding)和后期绑定(LateBinding)的概念,反射是一种强大的工具,但在性能要求较高的场景中应谨慎使用,感兴趣的朋友跟随小编一起看看吧
    2024-11-11
  • ASP.NET Core为Ocelot网关配置Swagger

    ASP.NET Core为Ocelot网关配置Swagger

    这篇文章介绍了ASP.NET Core为Ocelot网关配置Swagger的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04

最新评论