Пример #1
0
        static void Main(string[] args)
        {
            DbContext Db = new DynamicModelTestDB();

            Db.Database.CreateIfNotExists();

            string path    = System.AppDomain.CurrentDomain.BaseDirectory + @"..\..\DynamicModelTestConfig.json.txt";
            string strjson = System.IO.File.ReadAllText(path, Encoding.Default);//拿配置文件



            Type          runtimeModels = SingletonForDymicModel.CreateInstance(strjson).GetType()[0]; //将配置文件转换为实体类
            DynamicEntity En            = Activator.CreateInstance(runtimeModels) as DynamicEntity;    //将实体类实例化

            //实例化后通过键值赋值,详细查看DynamicEntity
            En["PersonID"] = 11212121;
            En["Name"]     = "李四";
            En["Sex"]      = "女";
            En["Age"]      = 18;

            //这里需将DBContext的实例化暴露出来,方便混合静态实体模型
            BaseDal dal = new BaseDal(CreateDbContext());

            //分页查询
            int     totalCount = dal.LoadEntities(runtimeModels).Count();
            int     pageIndex  = 1;
            int     pageSize   = 2;
            dynamic results    = dal.LoadEntities(runtimeModels).Where("id>0").OrderBy("Age").Skip((pageIndex - 1) * pageSize).Take(pageSize);

            foreach (var item in results)
            {
                Console.Write(item.Name);
            }

            //查询和删除
            dynamic result = dal.LoadEntities(runtimeModels).Where("id >6").OrderBy("Age");

            foreach (var item in result)
            {
                Console.Write(item.Name);
                //dal.DeleteEntity(item);
            }

            for (int i = 0; i <= 20; i++)
            {
                dal.AddEntity(En, runtimeModels); //增加
                CreateDbContext().SaveChanges();  //最后统一保存
            }

            Console.ReadKey();
        }
Пример #2
0
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                modelBuilder.Conventions.Remove <PluralizingTableNameConvention>(); //去掉创建数据表默认的复数形式
                /*************************************以下为必须添加内容*************************************/

                string path    = System.AppDomain.CurrentDomain.BaseDirectory + @"..\..\DynamicModelTestConfig.json.txt";
                string strjson = System.IO.File.ReadAllText(path, Encoding.Default);//拿配置文件

                Type[] runtimedata = SingletonForDymicModel.CreateInstance(strjson).GetType();
                if (runtimedata != null)
                {
                    foreach (var item in runtimedata)
                    {
                        modelBuilder.RegisterEntityType(item);
                    }
                }
                /*************************************以上为必须添加内容*************************************/
                base.OnModelCreating(modelBuilder);
            }
Пример #3
0
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove <PluralizingTableNameConvention>(); //去掉创建数据表默认的复数形式

            /*************************************以下为必须添加内容*************************************/

            if (Convert.ToBoolean(ConfigurationManager.AppSettings["DynamicModelSwitch"]))//这里做一个开关,项目不涉及到的时候关闭,避免影响效率
            {
                Type[] runtimedata = SingletonForDymicModel.CreateInstance(GetJsonDatas.GetJson()).GetType();
                if (runtimedata != null)
                {
                    foreach (var item in runtimedata)
                    {
                        modelBuilder.RegisterEntityType(item);
                    }
                }
            }
            /*************************************以上为必须添加内容*************************************/

            base.OnModelCreating(modelBuilder);
        }
Пример #4
0
 /// <summary>
 /// 获取配置信息中字段名称
 /// </summary>
 /// <param name="strjson"></param>
 /// <param name="ID"></param>
 /// <returns></returns>
 public IEnumerable <RuntimeModelMeta.ModelPropertyMeta> GetRuntimeModelProperty(string strjson, int ID)
 {
     return(SingletonForDymicModel.CreateInstance(strjson).GetRuntimeModelMeta()[ID].ModelProperties.Where(c => true));
 }
Пример #5
0
 /// <summary>
 /// 将配置文件转换为实体类
 /// </summary>
 /// <param name="strjson">配置文件</param>
 /// <param name="ID">实体类型的ID</param>
 /// <returns></returns>
 public Type GetRuntimeModelType(string strjson, int ID)
 {
     return(SingletonForDymicModel.CreateInstance(strjson).GetType()[ID]);
 }