当前位置: 首页 > news >正文

如何创建一个新网站百度推广登录入口下载

如何创建一个新网站,百度推广登录入口下载,威客网站建设,长春网站开发公司现在有两张表,结构一模一样,我又不想创建两个一模一样的model,就想一个model映射到两张表 废话不多说直接上代码 安装依赖包 创建model namespace oneModelMultiTable.Model {public class Test{public int id { get; set; }public string…

现在有两张表,结构一模一样,我又不想创建两个一模一样的model,就想一个model映射到两张表
在这里插入图片描述
废话不多说直接上代码

  1. 安装依赖包
    在这里插入图片描述
  2. 创建model
namespace oneModelMultiTable.Model
{public class Test{public int id { get; set; }public string name { get; set; }public string tablename { get; set; }}
}
  1. 创建DBContext
    我们需要使用tablename 动态指定表名,因此需要在DBContext中添加这个属性
namespace oneModelMultiTable
{public class DBHelper:DbContext{public DbSet<Test> testConfigs { get; set; }public string tablename { get; set; }public DBHelper(DbContextOptions<DBHelper> options):base(options){}protected override void OnModelCreating(ModelBuilder modelBuilder){modelBuilder.Entity<Test>(b =>{b.ToTable(tablename);b.HasKey(p => p.id);});base.OnModelCreating(modelBuilder);//modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);}}
}
  1. 创建DynamicModelCacheKeyFactory 继承IModelCacheKeyFactory
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
namespace oneModelMultiTable
{public class DynamicModelCacheKeyFactory : IModelCacheKeyFactory{public object Create(DbContext context, bool designTime){object p = context is DBHelper dynamicContext? (context.GetType(), dynamicContext.tablename): (object)context.GetType();return p;}}
}
  1. 依赖注入
builder.Services.AddDbContext<DBHelper>(options =>
{options.UseNpgsql(@"Host=192.168.214.133;Port=32222;Database=postgresdb;Username=postgresadmin;Password=admin123").ReplaceService<IModelCacheKeyFactory, DynamicModelCacheKeyFactory>();
});
  1. 创建controller
using Microsoft.AspNetCore.Mvc;
using oneModelMultiTable.Model;// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860namespace oneModelMultiTable.Controllers
{[Route("api/[controller]/[action]")][ApiController]public class TestController : ControllerBase{public readonly DBHelper dBHelper;public TestController(DBHelper _DBHelper){dBHelper = _DBHelper;}// GET: api/<TestController>[HttpGet]public List<Test> Get(string tablename){dBHelper.tablename = tablename;return dBHelper.testConfigs.ToList();}}
}

原理
你可能想通过ToTable()方法来更改表名,但是我们如何在OnModelCreating方法中更改表名呢?当EF构建模型时,它只运行OnModelCreating一次。

对于这个场景,我们需要通过使用IModelCacheKeyFactory来更改默认映射,它允许我们连接到模型缓存机制,以便EF可以根据其属性创建不同的模型。
EF使用IModelCacheKeyFactory为模型生成缓存键。

https://yanxiaodi.medium.com/mapping-the-model-to-multiple-tables-with-entityframework-core-b46bdeed8661

https://medium.com/@pawel.gerr/entity-framework-core-changing-database-schema-at-runtime-dcf1211768c6

https://github.com/xdqt/asp.net-core/tree/master/oneModelMultiTable

http://www.hengruixuexiao.com/news/42554.html

相关文章:

  • 网站建设主要由哪几个部分组成深圳优化seo排名
  • 网站平台网络广告有哪些
  • 衣联网和一起做网站 哪家强泉州seo代理计费
  • 东莞 营销网站建设重要新闻今天8条新闻
  • 培训机构整顿重庆seo建站
  • 打开网站 显示建设中友情链接购买网站
  • 网站怎么做子页合肥网络seo推广服务
  • 网站建设seoppt如何做推广
  • 怎么快速建动态网站高质量外链
  • 039 织梦云idc网站源码深圳网络营销渠道
  • 武汉专业做网站公司宁波seo外包
  • 我的文章被其他公司网站抄袭怎么做怎么制作自己的个人网站
  • 网站建设 功能需求电商中seo是什么意思
  • 网站留言板怎么做phpsql新网站百度seo如何做
  • 建设公众号网站seo编辑培训
  • 网页开发和网站开发农产品营销策划方案
  • 在线赚钱网站sem是什么品牌
  • 网站banner怎么做chrome手机安卓版
  • cms网站开发流程快速排名官网
  • 做百度网站排名软件百度推广费用
  • 有没有教做韩餐的网站seo网络优化推广
  • 深圳罗湖区网站建设公司seo网络推广案例
  • 最好的韩国服务器电商seo优化是什么
  • 用dw做的网站怎么发布到网上seo搜索引擎优化视频
  • 刚创业 建网站深圳网络营销和推广方案
  • wordpress多站点搭建淘宝一个关键词要刷多久
  • 一个好的网站需要具备什么百度点击率排名有效果吗
  • 动态网站开发常见语言企业营销策划书范文
  • 八亿建站软文文章
  • logo一键生成器免费版原型图seo外链招聘