zoukankan      html  css  js  c++  java
  • CodeFirst中DbContext动态添加DbSet

     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();
                 }
             }
         }
     }
  • 相关阅读:
    Python中修改字符串的四种方法
    一些有用的资源分享(工具+电子书)
    什么是DFX测试
    测试笔,测试纸杯
    测试用例八大要素
    软件测试的16种测试类型
    python作业(二)
    python作业(一)
    菜鸟学python(第一天)函数及模块使用
    [Spring MVC]
  • 原文地址:https://www.cnblogs.com/answercard/p/6234562.html
Copyright © 2011-2022 走看看