Пример #1
0
        static void Main(string[] args)
        {
            Database.SetInitializer <MyDbContext>(new MigrateDatabaseToLatestVersion <MyDbContext, Configuration>());
            EntityBuilder entityBuilder = new EntityBuilder();
            var           Employees     = new Model.DynamicEntity
            {
                BaseType
                    = typeof(EntityBase),
                Id  = 1,
                IsDetailedEntity = false,
                MasterId         = 1,
                Name             = "Employees",
                TableName        = "Employees",
                UniqueId         = Guid.NewGuid()
            };

            Employees.Properties.Add(new Model.DynamicProperty
            {
                IsForignKey   = false,
                PropertyType  = typeof(System.String),
                PrropertyName = "FirstName",
                MaxStringSize = 200
            });
            Employees.Properties.Add(new Model.DynamicProperty
            {
                IsForignKey   = false,
                PropertyType  = typeof(System.String),
                PrropertyName = "LastName",
                MaxStringSize = 200
            });
            Employees.EntityType = entityBuilder.BuildEntityType(Employees);

            var Addresses = new Model.DynamicEntity
            {
                BaseType         = typeof(EntityBase),
                Id               = 2,
                IsDetailedEntity = false,
                MasterId         = 1,
                Name             = "Addresses",
                TableName        = "Addresses",
                UniqueId         = Guid.NewGuid()
            };

            Addresses.Properties.Add(new Model.DynamicProperty
            {
                PropertyType  = typeof(System.String),
                PrropertyName = "City",
                MaxStringSize = 200,
                IsForignKey   = false,
            });
            //add  Forign key  and nested  table
            Addresses.Properties.Add(new Model.DynamicProperty
            {
                PropertyType  = Employees.EntityType,
                PrropertyName = "Employee",
                IsVirtual     = true,
            });

            Addresses.Properties.Add(new Model.DynamicProperty
            {
                PropertyType  = typeof(System.Int32),
                PrropertyName = "EmployeeId",
                MaxStringSize = 200,
                IsForignKey   = true,
                ForignKey     = "Employee"
            });
            Addresses.EntityType     = entityBuilder.BuildEntityType(Addresses);
            DynamicAssembly.Entities = new ObservableCollection <Model.DynamicEntity>();
            DynamicAssembly.Entities.Add(Employees);
            DynamicAssembly.Entities.Add(Addresses);
            DynamicAssembly._Context = DbContextFactory.CreateDBContext <MyDbContext>();
            DbContextFactory.UpdateDynamicDataBase <Configuration>(new Configuration());
            var exmployeesEntityType = DynamicAssembly.Entities.SingleOrDefault(x => x.Id == 1).EntityType;
            var employees            = DynamicAssembly._Context.Set(exmployeesEntityType);

            dynamic newRecord = (Activator.CreateInstance(exmployeesEntityType));

            newRecord.FirstName = "Ibrahim";
            newRecord.LastName  = "Abulubad";
            employees.Add(newRecord);
            DynamicAssembly._Context.SaveChanges();
            List <CustomDynamicExpression> dynamicFilter = new List <CustomDynamicExpression>();

            dynamicFilter.Add(new CustomDynamicExpression
            {
                DynamicCondition = new DynamicCondition
                {
                    Column         = "FirstName",
                    Value          = "Ibrahim",
                    WhereOperation = DynamicHelper.Enums.WhereOperation.Equal
                }
            }
                              );
            var query = employees.Where(dynamicFilter);

            var list = query.OrderBy("Id", SortDirection.Asc).Skip(0).Take(10).ToListAsync().GetAwaiter().GetResult();
        }