CodeFirst中DbContext动态添加DbSet
添加 动态
2023-09-14 08:59:22 时间
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.Entity; using System.ComponentModel.DataAnnotations; using System.Data.Entity.ModelConfiguration; using System.Data.Entity.ModelConfiguration.Configuration; namespace CodeFirstDemo { /// <summary> /// 实体注册Helper接口 /// </summary> public interface IEntityRegstHelper { void RegTo(ConfigurationRegistrar confRegistrar); } // 客户 public class Customer { public int CustomerID { get; set; } public String CustomerName { get; set; } public string Address { get; set; } } // 客户实体的注册Helper public class CustomerRegstHelper : IEntityRegstHelper { public void RegTo(ConfigurationRegistrar confRegistrar) { confRegistrar.Add<Customer>(new EntityTypeConfiguration<Customer>()); } } public class MyDbContext : DbContext { List<IEntityRegstHelper> entityRegstHelperlist; // 添加实体注册 public void AddEntityRegHelper(IEntityRegstHelper r) { if (entityRegstHelperlist == null) entityRegstHelperlist = new List<IEntityRegstHelper>(); entityRegstHelperlist.Add(r); } //public DbSet<Customer> Customers { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { // 动态地加入实体 if (entityRegstHelperlist != null) { foreach (IEntityRegstHelper r in entityRegstHelperlist) r.RegTo(modelBuilder.Configurations); } } } class Program { static void Main(string[] args) { using (var db = new MyDbContext()) { db.AddEntityRegHelper(new CustomerRegstHelper()); var c = new Customer() { CustomerName = "长沙市大风通讯有限公司", Address = "长沙市" }; db.Set<Customer>().Add(c); db.SaveChanges(); var query = from customer in db.Set<Customer>() select customer; foreach (var cq in query) { Console.WriteLine("客户: {0}, 地址:{1}", cq.CustomerName, cq.Address); } Console.WriteLine("按任意键退出"); Console.ReadKey(); } } } }
相关文章
- 博客添加暗色主题切换功能,从主题切换聊聊前后端cookies的使用
- iOS小技能:动态地给类添加新的方法、实例变量、属性。
- vue怎么使用layui_layui动态添加输入框
- 【ProPlot库】ProPlot3兰伯特投影-可添加刻度(三)
- WordPress添加动态标题
- linux服务器路由添加命令_linux加静态路由命令
- 7b2美化-侧边栏添加动态播报
- React在循环DOM的时候为什么需要添加key
- 动态添加Redis密码认证的方法
- vmware 中linux虚拟机动态添加硬盘详解程序员
- JS动态添加表格(一)详解编程语言
- Linux添加虚拟网卡:一步一步实现(linux加虚拟网卡)
- php动态添加记录
- asp.net(C#)动态添加非ASP的标准html控件(如添加Script标签)
- asp.net动态添加多个用户控件
- 为body标签和document.body都添加点击事件后仅Firefox弹出了两次
- Js动态添加复选框Checkbox的实例方法
- 动态添加删除表格行的js实现代码
- 使用grappelli为djangoadmin后台添加模板