コード例 #1
0
        public void TestFillModel()
        {
            MSSQLProvider p = new MSSQLProvider(GetTestDB(), null);

            SourceView sv = p.GetSourceView(null, "ent1,ent2,1to2");

            WXMLModel model = new WXMLModel();

            SourceToModelConnector c = new SourceToModelConnector(sv, model);

            c.ApplySourceViewToModel();

            Assert.AreEqual(3, model.GetSourceFragments().Count());

            Assert.AreEqual(2, model.GetEntities().Count());

            Assert.IsNotNull(model.GetEntity("e_dbo_ent1"));

            Assert.IsNotNull(model.GetEntity("e_dbo_ent2"));

            Assert.AreEqual(1, model.GetEntity("e_dbo_ent1").GetProperties().Count());

            Assert.AreEqual(1, model.GetEntity("e_dbo_ent1").GetPkProperties().Count());

            Assert.IsTrue(model.GetEntity("e_dbo_ent1").GetPkProperties().First().HasAttribute(Field2DbRelations.PrimaryKey));

            Assert.AreEqual(2, model.GetEntity("e_dbo_ent2").GetProperties().Count());

            Assert.AreEqual(1, model.GetRelations().Count());
        }
コード例 #2
0
        public void TestGenerateScript()
        {
            var p = new MSSQLProvider(GetTestDB(), null);

            var sv = p.GetSourceView();

            var model = new WXMLModel();

            var smc = new SourceToModelConnector(sv, model);

            smc.ApplySourceViewToModel();

            Assert.AreEqual(28, model.GetActiveEntities().Count());
            Assert.AreEqual(32, model.GetSourceFragments().Count());

            var msc = new ModelToSourceConnector(new SourceView(), model);

            string script = msc.GenerateSourceScript(p, false);

            Assert.IsFalse(string.IsNullOrEmpty(script));

            Assert.AreEqual(32, new Regex("CREATE TABLE ").Matches(script).Count);

            Console.WriteLine(script);
        }
コード例 #3
0
        private static WorkflowRuntime InitWorkflowRuntime()
        {
            //todo if you have a license key, you have to register it here
            //WorkflowRuntime.RegisterLicense("your license key text");
            //todo if you are using database different from SQL Server you have to use different persistence provider here.
            ConnectionString = "Data Source=SGHZ001028412;Initial Catalog=WorkflowDemo;Persist Security Info=True;User ID=sa;Password=Password@2019";
            var dbProvider = new MSSQLProvider(ConnectionString);

            var builder = new WorkflowBuilder <XElement>(
                dbProvider,
                new OptimaJet.Workflow.Core.Parser.XmlWorkflowParser(),
                dbProvider
                ).WithDefaultCache();

            var runtime = new WorkflowRuntime()
                          .WithBuilder(builder)
                          .WithPersistenceProvider(dbProvider)
                          .WithBus(new NullBus())
                          //todo if you have planned use Timers uncomment following line of code
                          //.WithTimerManager(new TimerManager())
                          .EnableCodeActions()
                          .SwitchAutoUpdateSchemeBeforeGetAvailableCommandsOn();

            //events subscription
            runtime.ProcessActivityChanged += (sender, args) => { };
            runtime.ProcessStatusChanged   += Runtime_ProcessStatusChanged;
            //todo if you have planned to use Code Actions functionality that required references to external assemblies you have to register them here
            //runtime.RegisterAssemblyForCodeActions(Assembly.GetAssembly(typeof(SomeTypeFromMyAssembly)));

            //starts the WorkflowRuntime
            //todo if you have planned use Timers the best way to start WorkflowRuntime is somewhere outside of this function in Global.asax for example
            runtime.Start();

            return(runtime);
        }
コード例 #4
0
        public void TestDropProperty()
        {
            MSSQLProvider p = new MSSQLProvider(GetTestDB(), null);

            SourceView sv = p.GetSourceView(null, "aspnet_Applications");

            Assert.AreEqual(4, sv.SourceFields.Count);

            WXMLModel model = new WXMLModel();

            SourceToModelConnector c = new SourceToModelConnector(sv, model);

            c.ApplySourceViewToModel();

            Assert.AreEqual(4, model.GetActiveEntities().First().GetActiveProperties().Count());

            SourceFieldDefinition fld = sv.SourceFields.Find(item => item.SourceFieldExpression == "[Description]");

            sv.SourceFields.Remove(fld);

            Assert.AreEqual(3, sv.SourceFields.Count);

            c.ApplySourceViewToModel(true, relation1to1.Default, true, true, false);

            Assert.AreEqual(3, model.GetActiveEntities().First().GetActiveProperties().Count());

            sv.SourceFields.Add(fld);

            Assert.AreEqual(4, sv.SourceFields.Count);

            c.ApplySourceViewToModel(true, relation1to1.Default, true, true, false);

            Assert.AreEqual(4, model.GetActiveEntities().First().GetActiveProperties().Count());
        }
コード例 #5
0
        public void TestSerializeSourceView()
        {
            MSSQLProvider p    = new MSSQLProvider(GetTestDB(), null);
            SourceView    view = p.GetSourceView();

            //XmlSerializer s = new XmlSerializer(typeof(SourceView));

            //s.Serialize(Console.Out, view);

            BinaryFormatter f = new BinaryFormatter();

            using (MemoryStream ms = new MemoryStream())
            {
                f.Serialize(ms, view);

                ms.Position = 0;

                view = (SourceView)f.Deserialize(ms);
            }

            Assert.AreEqual(133, view.SourceFields.Count());

            Assert.AreEqual(32, view.GetSourceFragments().Count());

            foreach (SourceFragmentDefinition fragment in view.GetSourceFragments())
            {
                Assert.IsTrue(view.GetSourceFields(fragment).Count() > 0);
            }
        }
コード例 #6
0
        public void TestFillModelRelations()
        {
            MSSQLProvider p = new MSSQLProvider(GetTestDB(), null);

            SourceView sv = p.GetSourceView(null, "aspnet_Applications,aspnet_Paths");

            WXMLModel model = new WXMLModel();

            SourceToModelConnector c = new SourceToModelConnector(sv, model);

            c.ApplySourceViewToModel();

            Assert.AreEqual(2, model.GetSourceFragments().Count());

            Assert.AreEqual(2, model.GetEntities().Count());

            var aspnet_Applications = model.GetEntity("e_dbo_aspnet_Applications");

            Assert.IsNotNull(aspnet_Applications);

            var aspnet_Paths = model.GetEntity("e_dbo_aspnet_Paths");

            Assert.IsNotNull(aspnet_Paths);

            Assert.IsNotNull(aspnet_Paths.GetProperty("Application"));
            Assert.IsNotNull(aspnet_Paths.GetProperty("PathId"));
            Assert.IsNotNull(aspnet_Paths.GetProperty("Path"));
            Assert.IsNotNull(aspnet_Paths.GetProperty("LoweredPath"));

            Assert.AreEqual(1, aspnet_Applications.One2ManyRelations.Count());

            Assert.AreEqual(aspnet_Paths, aspnet_Applications.One2ManyRelations.First().Entity);
        }
コード例 #7
0
        public void TestAlterEntities()
        {
            MSSQLProvider p = new MSSQLProvider(GetTestDB(), null);

            SourceView sv = p.GetSourceView(null, "ent1,ent2,1to2");

            WXMLModel model = new WXMLModel();

            SourceToModelConnector c = new SourceToModelConnector(sv, model);

            c.ApplySourceViewToModel();

            Assert.AreEqual(3, model.GetSourceFragments().Count());

            Assert.AreEqual(2, model.GetEntities().Count());

            sv = p.GetSourceView(null, "ent1,ent2,1to2");

            c = new SourceToModelConnector(sv, model);
            c.ApplySourceViewToModel();

            Assert.AreEqual(3, model.GetSourceFragments().Count());

            Assert.AreEqual(2, model.GetEntities().Count());
        }
コード例 #8
0
        public void TestGenerateScriptDropConstraint()
        {
            var p = new MSSQLProvider(GetTestDB(), null);

            var sv = p.GetSourceView();

            var model = new WXMLModel();

            var smc = new SourceToModelConnector(sv, model);

            smc.ApplySourceViewToModel(false, relation1to1.Hierarchy, true, true, false);

            Assert.AreEqual(28, model.GetActiveEntities().Count());
            Assert.AreEqual(32, model.GetSourceFragments().Count());

            EntityPropertyDefinition prop = model.GetActiveEntities().SelectMany(item => item.GetProperties().OfType <EntityPropertyDefinition>()).First();
            SourceConstraint         c    = new SourceConstraint(SourceConstraint.UniqueConstraintTypeName, "xxx");

            c.SourceFields.AddRange(prop.SourceFields.Cast <SourceFieldDefinition>());
            prop.SourceFragment.Constraints.Add(c);

            var msc = new ModelToSourceConnector(p.GetSourceView(), model);
            var tbl = msc.SourceView.GetSourceFragments().Single(item => item.Selector == prop.SourceFragment.Selector &&
                                                                 item.Name == prop.SourceFragment.Name);

            tbl.Constraints.Add(new SourceConstraint(SourceConstraint.UniqueConstraintTypeName, "xxx"));

            string script = msc.GenerateSourceScript(p, false);

            Assert.IsFalse(string.IsNullOrEmpty(script), script);

            Assert.AreEqual(1, new Regex("DROP CONSTRAINT").Matches(script).Count);
        }
コード例 #9
0
        public void TestGenerateComplex()
        {
            SourceView sv = TestsSourceModel.TestsSourceModel.CreateComplexSourceView();

            var model = new WXMLModel();

            var smc = new SourceToModelConnector(sv, model);

            smc.ApplySourceViewToModel();

            Assert.AreEqual(2, model.GetActiveEntities().Count());
            Assert.AreEqual(4, model.GetActiveRelations().Count());

            model.GetActiveRelations().First().Constraint = RelationConstraint.Unique;

            var msc = new ModelToSourceConnector(new SourceView(), model);

            var    p      = new MSSQLProvider(null, null);
            string script = msc.GenerateSourceScript(p, false);

            Assert.IsFalse(string.IsNullOrEmpty(script));
            Console.WriteLine(script);

            Assert.AreEqual(6, new Regex("CREATE TABLE ").Matches(script).Count);

            Assert.AreEqual(2, new Regex("PRIMARY KEY CLUSTERED").Matches(script).Count);

            Assert.AreEqual(8, new Regex("FOREIGN KEY").Matches(script).Count);

            Assert.AreEqual(1, new Regex("UNIQUE CLUSTERED").Matches(script).Count);
        }
コード例 #10
0
        private static WorkflowRuntime InitWorkflowRuntime()
        {
            Connectionstring = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
            if (string.IsNullOrEmpty(Connectionstring))
            {
                throw new Exception("ارتباط با پایگاه داده بررسی شود");
            }
            var dbProvider = new MSSQLProvider(Connectionstring);
            var builder    = new WorkflowBuilder <XElement>(
                dbProvider,
                new OptimaJet.Workflow.Core.Parser.XmlWorkflowParser(),
                dbProvider).WithDefaultCache();

            var runtime = new WorkflowRuntime()
                          .WithBuilder(builder)
                          .WithPersistenceProvider(dbProvider)
                          .EnableCodeActions()
                          .SwitchAutoUpdateSchemeBeforeGetAvailableCommandsOn()
                          .AsSingleServer();

            runtime.ProcessActivityChanged += (sender, args) => { };
            runtime.ProcessStatusChanged   += (sender, args) => { };
            runtime.Start();
            return(runtime);
        }
コード例 #11
0
ファイル: WorkflowInit.cs プロジェクト: hoaithu7604/DAMNM
        private static WorkflowRuntime InitWorkflowRuntime()
        {
            var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            var dbProvider       = new MSSQLProvider(connectionString);

            var builder = new WorkflowBuilder <XElement>(
                dbProvider,
                new OptimaJet.Workflow.Core.Parser.XmlWorkflowParser(),
                dbProvider
                ).WithDefaultCache();

            var runtime = new WorkflowRuntime()
                          .WithBuilder(builder)
                          .WithPersistenceProvider(dbProvider)
                          .WithBus(new NullBus())
                          .EnableCodeActions()
                          .SwitchAutoUpdateSchemeBeforeGetAvailableCommandsOn();

            runtime.ProcessActivityChanged += (sender, args) => { };
            runtime.ProcessStatusChanged   += (sender, args) => { };
            runtime.Start();

            runtime.ProcessStatusChanged += _runtime_ProcessStatusChanged;

            return(runtime);
        }
コード例 #12
0
        public void TestSourceView()
        {
            MSSQLProvider p    = new MSSQLProvider(GetTestDB(), null);
            SourceView    view = p.GetSourceView();

            Assert.AreEqual(133, view.SourceFields.Count());

            Assert.AreEqual(32, view.GetSourceFragments().Count());
        }
コード例 #13
0
        public void TestFillModel3()
        {
            MSSQLProvider p = new MSSQLProvider(GetTestDB(), null);

            SourceView sv = p.GetSourceView(null, "complex_fk");

            WXMLModel model = new WXMLModel();

            SourceToModelConnector c = new SourceToModelConnector(sv, model);

            c.ApplySourceViewToModel();

            Assert.AreEqual(1, model.GetSourceFragments().Count());

            Assert.AreEqual(1, model.GetEntities().Count());
        }
コード例 #14
0
        public void TestCreateTable()
        {
            var           p      = new MSSQLProvider();
            var           sf     = new SourceFragmentDefinition("sdfdsf", "tbl", "dbo");
            StringBuilder script = new StringBuilder();

            p.GenerateCreateScript(new[]
            {
                new ScalarPropertyDefinition(null, "Prop", "Prop", Field2DbRelations.None,
                                             null, new TypeDefinition("dfg", typeof(int)),
                                             new SourceFieldDefinition(sf, "col1"),
                                             AccessLevel.Private, AccessLevel.Public)
            }, script, false);

            Assert.AreEqual(string.Format("CREATE TABLE dbo.tbl(col1 int NULL);{0}{0}", Environment.NewLine), script.ToString());
        }
コード例 #15
0
        public void TestFillModel4()
        {
            MSSQLProvider p = new MSSQLProvider(GetTestDB(), null);

            SourceView sv = p.GetSourceView(null, "aspnet_Membership, 3to3");

            WXMLModel model = new WXMLModel();

            SourceToModelConnector c = new SourceToModelConnector(sv, model);

            c.ApplySourceViewToModel();

            Assert.AreEqual(2, model.GetSourceFragments().Count());

            Assert.AreEqual(2, model.GetEntities().Count());
        }
コード例 #16
0
        public void TestGenerateScriptHierachy()
        {
            var p = new MSSQLProvider(GetTestDB(), null);

            var sv = p.GetSourceView();

            var model = new WXMLModel();

            var smc = new SourceToModelConnector(sv, model);

            smc.ApplySourceViewToModel(false, relation1to1.Hierarchy, true, true, false);

            Assert.AreEqual(28, model.GetActiveEntities().Count());
            Assert.AreEqual(32, model.GetSourceFragments().Count());

            var msc = new ModelToSourceConnector(new SourceView(), model);

            string script = msc.GenerateSourceScript(p, false);

            Assert.IsFalse(string.IsNullOrEmpty(script));
            Console.WriteLine(script);

            Assert.AreEqual(sv.GetSourceFragments().Count(), new Regex("CREATE TABLE ").Matches(script).Count);
            IEnumerable <SourceConstraint> pks = sv.GetSourceFragments().SelectMany(item => item.Constraints.Where(cns => cns.ConstraintType == SourceConstraint.PrimaryKeyConstraintTypeName));

            Assert.AreEqual(pks.Count(), new Regex("PRIMARY KEY CLUSTERED").Matches(script).Count);
            Assert.AreEqual(2, new Regex("UNIQUE NONCLUSTERED").Matches(script).Count);
            Assert.AreEqual(1, new Regex("UNIQUE CLUSTERED").Matches(script).Count);
            Assert.AreEqual(sv.GetSourceFragments().SelectMany(item => item.Constraints.Where(cns => cns.ConstraintType == SourceConstraint.ForeignKeyConstraintTypeName)).Count(), new Regex("FOREIGN KEY").Matches(script).Count);

            msc = new ModelToSourceConnector(sv, model);

            script = msc.GenerateSourceScript(p, false);

            Assert.IsTrue(string.IsNullOrEmpty(script), script);

            RelationDefinitionBase r = model.GetActiveRelations().First(item => item.Constraint == RelationConstraint.PrimaryKey);

            r.Constraint = RelationConstraint.Unique;
            r.SourceFragment.Constraints.Single(item => item.ConstraintType == SourceConstraint.PrimaryKeyConstraintTypeName).ConstraintType = SourceConstraint.UniqueConstraintTypeName;

            msc = new ModelToSourceConnector(sv, model);

            script = msc.GenerateSourceScript(p, false);

            Assert.IsTrue(string.IsNullOrEmpty(script), script);
        }
コード例 #17
0
        public void TestFillUnify()
        {
            MSSQLProvider p = new MSSQLProvider(GetTestDB(), null);

            SourceView sv = p.GetSourceView(null, "aspnet_Membership, aspnet_Users");

            WXMLModel model = new WXMLModel();

            SourceToModelConnector c = new SourceToModelConnector(sv, model);

            c.ApplySourceViewToModel(false, relation1to1.Unify, true, true, false);

            Assert.AreEqual(2, model.GetSourceFragments().Count());

            Assert.AreEqual(1, model.GetEntities().Count());

            Assert.AreEqual(2, model.GetEntities().Single().GetSourceFragments().Count());
        }
コード例 #18
0
        public void TestSourceViewPatterns()
        {
            MSSQLProvider p = new MSSQLProvider(GetTestDB(), null);

            Assert.AreEqual(11, p.GetSourceView(null, "aspnet_%").GetSourceFragments().Count());

            Assert.AreEqual(21, p.GetSourceView(null, "(aspnet_%)").GetSourceFragments().Count());

            Assert.AreEqual(16, p.GetSourceView(null, "(aspnet_%,ent%)").GetSourceFragments().Count());

            Assert.AreEqual(1, p.GetSourceView(null, "guid_table").GetSourceFragments().Count());

            Assert.AreEqual(1, p.GetSourceView("test", null).GetSourceFragments().Count());

            Assert.AreEqual(32, p.GetSourceView("test,dbo", null).GetSourceFragments().Count());

            Assert.AreEqual(31, p.GetSourceView("(test)", null).GetSourceFragments().Count());

            Assert.AreEqual(3, p.GetSourceView(null, "ent1,ent2,1to2").GetSourceFragments().Count());
        }
コード例 #19
0
        public void TestAlter()
        {
            var p = new MSSQLProvider(GetTestDB(), null);

            var sv = p.GetSourceView();

            var model = new WXMLModel();

            var smc = new SourceToModelConnector(sv, model);

            smc.ApplySourceViewToModel(false, relation1to1.Hierarchy, true, true, false);

            Assert.AreEqual(28, model.GetActiveEntities().Count());
            Assert.AreEqual(32, model.GetSourceFragments().Count());

            var msc = new ModelToSourceConnector(new SourceView(), model);

            foreach (SourceFragmentDefinition sf in sv.GetSourceFragments().ToArray())
            {
                foreach (SourceFieldDefinition field in sv.GetSourceFields(sf).Where(item => !item.IsFK))
                {
                    msc.SourceView.SourceFields.Add(new SourceFieldDefinition(new SourceFragmentDefinition(field.SourceFragment.Identifier,
                                                                                                           field.SourceFragment.Name, field.SourceFragment.Selector), field.SourceFieldExpression, field.SourceType, field.SourceTypeSize, field.IsNullable, field.IsAutoIncrement, field.DefaultValue));
                    break;
                }
            }

            string script = msc.GenerateSourceScript(p, false);

            Assert.IsFalse(string.IsNullOrEmpty(script));
            Console.WriteLine(script);

            Assert.AreEqual(4, new Regex("CREATE TABLE ").Matches(script).Count);
            Assert.AreEqual(26, new Regex("ALTER TABLE ").Matches(script.Remove(script.IndexOf("--Creating primary keys"))).Count);
            IEnumerable <SourceConstraint> pks = sv.GetSourceFragments().SelectMany(item => item.Constraints.Where(cns => cns.ConstraintType == SourceConstraint.PrimaryKeyConstraintTypeName));

            Assert.AreEqual(pks.Count(), new Regex("PRIMARY KEY CLUSTERED").Matches(script).Count);
            Assert.AreEqual(2, new Regex("UNIQUE NONCLUSTERED").Matches(script).Count);
            Assert.AreEqual(1, new Regex("UNIQUE CLUSTERED").Matches(script).Count);
            Assert.AreEqual(sv.GetSourceFragments().SelectMany(item => item.Constraints.Where(cns => cns.ConstraintType == SourceConstraint.ForeignKeyConstraintTypeName)).Count(), new Regex("FOREIGN KEY").Matches(script).Count);
        }
コード例 #20
0
ファイル: EngineService.cs プロジェクト: briancooper/SevanWFE
        private WorkflowRuntime WorkflowRuntimeFactory()
        {
            //WorkflowRuntime.RegisterLicense("your license key text");
            var dbProvider = new MSSQLProvider(_engineConfiguration.ConnectionString);

            var builder = new WorkflowBuilder <XElement>(dbProvider, new XmlWorkflowParser(), dbProvider).WithDefaultCache();

            var runtime = new WorkflowRuntime()
                          .WithBuilder(builder)
                          .WithPersistenceProvider(dbProvider)
                          .WithActionProvider(_actionService)
                          .WithBus(new NullBus())
                          .EnableCodeActions()
                          .SwitchAutoUpdateSchemeBeforeGetAvailableCommandsOn();

            runtime.ProcessStatusChanged += Runtime_ProcessStatusChanged;

            runtime.Start();

            return(runtime);
        }
コード例 #21
0
        public static WorkflowRuntime InitWorkflowRuntime(IServiceProvider provider, IConfigurationRoot config)
        {
            var connectionString = config.GetConnectionString("Default");

            var dbProvider = new MSSQLProvider(connectionString);

            var builder = new WorkflowBuilder <XElement>(dbProvider, new XmlWorkflowParser(), dbProvider).WithDefaultCache();

            Runtime = new WorkflowRuntime()
                      .WithBuilder(builder)
                      .WithPersistenceProvider(dbProvider)
                      .WithActionProvider(provider.GetService <IWorkflowActionProvider>())
                      .EnableCodeActions()
                      .SwitchAutoUpdateSchemeBeforeGetAvailableCommandsOn();

            Runtime.ProcessStatusChanged += Runtime_ProcessStatusChanged;

            Runtime.Start();

            return(Runtime);
        }
コード例 #22
0
        private static WorkflowRuntime InitWorkflowRuntime()
        {
            try
            {
                var connectionString = ConnectionString;
                var dbProvider       = new MSSQLProvider(connectionString);

                var builder = new WorkflowBuilder <XElement>(
                    dbProvider,
                    new OptimaJet.Workflow.Core.Parser.XmlWorkflowParser(),
                    dbProvider
                    ).WithDefaultCache();

                var runtime = new WorkflowRuntime()
                              .WithBuilder(builder)
                              .WithPersistenceProvider(dbProvider)
                              .WithBus(new NullBus())
                              //TODO If you have planned use Timers uncomment following line of code
                              //.WithTimerManager(new TimerManager())
                              .EnableCodeActions()
                              .SwitchAutoUpdateSchemeBeforeGetAvailableCommandsOn();
                //events subscription
                runtime.ProcessActivityChanged += (sender, args) => { };
                runtime.ProcessStatusChanged   += (sender, args) => { };
                //TODO If you have planned to use Code Actions functionality that required references to external assemblies you have to register them here
                //runtime.RegisterAssemblyForCodeActions(Assembly.GetAssembly(typeof(SomeTypeFromMyAssembly)));

                //starts the WorkflowRuntime
                //TODO If you have planned use Timers the best way to start WorkflowRuntime is somwhere outside of this function in Global.asax for example
                runtime.Start();

                return(runtime);
            }
            catch (Exception ex)
            {
                throw new Exception();
            }
        }
コード例 #23
0
        public void TestFillHierarchy()
        {
            MSSQLProvider p = new MSSQLProvider(GetTestDB(), null);

            SourceView sv = p.GetSourceView(null, "aspnet_Membership, aspnet_Users");

            WXMLModel model = new WXMLModel();

            SourceToModelConnector c = new SourceToModelConnector(sv, model);

            c.ApplySourceViewToModel();

            Assert.AreEqual(2, model.GetSourceFragments().Count());

            Assert.AreEqual(2, model.GetEntities().Count());

            EntityDefinition membership = model.GetEntity("e_dbo_aspnet_Membership");

            Assert.IsNotNull(membership);

            EntityDefinition users = model.GetEntity("e_dbo_aspnet_Users");

            Assert.IsNotNull(users);

            Assert.AreEqual(membership.BaseEntity, users);

            Assert.AreEqual(2, membership.GetSourceFragments().Count());

            Assert.AreEqual(1, membership.OwnSourceFragments.Count());

            Assert.AreEqual(1, users.GetSourceFragments().Count());

            Assert.AreEqual(1, users.OwnSourceFragments.Count());

            Assert.IsNull(users.BaseEntity);
        }
コード例 #24
0
        public void TestDropEntityProperty()
        {
            MSSQLProvider p = new MSSQLProvider(GetTestDB(), null);

            SourceView sv = p.GetSourceView(null, "aspnet_Paths, aspnet_Applications");

            Assert.AreEqual(8, sv.SourceFields.Count);

            WXMLModel model = new WXMLModel();

            SourceToModelConnector c = new SourceToModelConnector(sv, model);

            c.ApplySourceViewToModel();

            Assert.AreEqual(4, model.GetEntity("e_dbo_aspnet_Paths").GetActiveProperties().Count());

            Assert.IsTrue(sv.SourceFields.Remove(sv.SourceFields.Find(item => item.SourceFieldExpression == "[ApplicationId]" && item.SourceFragment.Name == "[aspnet_Paths]")));

            Assert.AreEqual(7, sv.SourceFields.Count);

            c.ApplySourceViewToModel(true, relation1to1.Default, true, true, false);

            Assert.AreEqual(3, model.GetEntity("e_dbo_aspnet_Paths").GetActiveProperties().Count());
        }
コード例 #25
0
ファイル: TestCodeGen.cs プロジェクト: AlexeyShirshov/om-ml2
        public void TestCompareLinqCtxMoreTables()
        {
            MSSQLProvider p = new MSSQLProvider(GetTestDB(), null);

            SourceView sv = p.GetSourceView(null, "ent1,ent2,1to2,ent3,3to3,complex_pk,complex_fk,aspnet_Applications,aspnet_Membership,aspnet_Users");

            Assert.AreEqual(10, sv.GetSourceFragments().Count());

            WXMLModel model = new WXMLModel();

            SourceToModelConnector c = new SourceToModelConnector(sv, model);

            c.ApplySourceViewToModel(false, relation1to1.Default, false, false, false);

            Assert.AreEqual(10, model.GetSourceFragments().Count());

            Assert.AreEqual(8, model.GetEntities().Count());

            model.LinqSettings = new LinqSettingsDescriptor
            {
                ContextName = "TestCtxDataContext"
            };

            model.Namespace = "LinqCodeGenTests";

            LinqContextGenerator gen = new LinqContextGenerator(model, new WXML.CodeDom.WXMLCodeDomGeneratorSettings());

            Console.WriteLine(gen.GenerateCode(LinqToCodedom.CodeDomGenerator.Language.CSharp));

            Assembly assembly = gen.Compile(LinqToCodedom.CodeDomGenerator.Language.CSharp);

            Assert.IsNotNull(assembly);

            Type ctxType = assembly.GetType(
                string.IsNullOrEmpty(model.Namespace) ? model.LinqSettings.ContextName
                    : model.Namespace + "." + model.LinqSettings.ContextName
                );

            Assert.IsNotNull(ctxType);

            DataContext ctx = (DataContext)Activator.CreateInstance(ctxType, GetTestDBConnectionString());

            Assert.IsNotNull(ctx);

            ctx.Log = Console.Out;

            TestCtxDataContext realCtx = new TestCtxDataContext(GetTestDBConnectionString());

            Type rctxType = typeof(TestCtxDataContext);

            foreach (PropertyInfo pi in ctxType.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly))
            {
                PropertyInfo rpi = rctxType.GetProperties().SingleOrDefault(item => item.Name == pi.Name);

                Assert.IsNotNull(rpi, "Cannot find property {0}", pi.Name);

                Assert.AreEqual(rpi.Attributes, pi.Attributes);
                Assert.AreEqual(rpi.CanRead, pi.CanRead);
                Assert.AreEqual(rpi.CanWrite, pi.CanWrite);

                Assert.AreEqual(rpi.GetGetMethod().Attributes, pi.GetGetMethod().Attributes);

                IListSource ent1s = (IListSource)pi.GetValue(ctx, null);

                Assert.IsNotNull(ent1s.GetList());

                Assert.AreEqual(((IListSource)rpi.GetValue(realCtx, null)).GetList().Count, ent1s.GetList().Count);
            }
        }
コード例 #26
0
 public PersistenceProviderContainer(IConfiguration config)
 {
     _provider = new MSSQLProvider(config.GetConnectionString("DefaultConnection"));
 }
コード例 #27
0
        public PersistenceProviderContainer()
        {
            var connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

            Provider = new MSSQLProvider(connectionString);
        }
コード例 #28
0
ファイル: Program.cs プロジェクト: AlexeyShirshov/om-ml2
        static void Main(string[] args)
        {
            Console.WriteLine("Worm xml schema generator. v0.3 2007");
            if (args.Length == 0)
            {
                ShowUsage();
                return;
            }

            CommandLine.Utility.Arguments param = new CommandLine.Utility.Arguments(args);

            string server = null;

            if (!param.TryGetParam("S", out server))
            {
                server = "(local)";
            }

            string dbName = null;

            if (!param.TryGetParam("D", out dbName))
            {
                if (!File.Exists(server))
                {
                    Console.WriteLine("Database is not specified or file {0} not found", server);
                    ShowUsage();
                    return;
                }
            }

            string e;
            string user = null;
            string psw  = null;

            if (!param.TryGetParam("E", out e))
            {
                e = "false";
                bool showUser = true;
                if (!param.TryGetParam("U", out user))
                {
                    Console.Write("User: "******"P", out psw))
                {
                    if (showUser)
                    {
                        Console.WriteLine("User: "******"Password: "******"schemas", out schemas);

            string namelike = null;

            param.TryGetParam("name", out namelike);

            string file = null;

            if (!param.TryGetParam("O", out file))
            {
                file = dbName + ".xml";
            }

            string merge = null;

            if (!param.TryGetParam("F", out merge))
            {
                merge = "merge";
            }
            switch (merge)
            {
            case "merge":
            case "error":
                //do nothing
                break;

            default:
                Console.WriteLine("Invalid \"Existing file behavior\" parameter.");
                ShowUsage();
                return;
            }

            string drop = null;

            if (!param.TryGetParam("R", out drop))
            {
                drop = "false";
            }
            bool dr = bool.Parse(drop);

            string namesp = dbName;

            param.TryGetParam("N", out namesp);

            string u = "true";

            if (!param.TryGetParam("Y", out u))
            {
                u = "false";
            }
            bool unify = bool.Parse(u);

            string hi = "true";

            if (!param.TryGetParam("H", out hi))
            {
                hi = "false";
            }
            bool hie = bool.Parse(hi);

            string tr = "true";

            if (!param.TryGetParam("T", out tr))
            {
                tr = "false";
            }
            bool transform = bool.Parse(tr);

            string es = "true";

            if (!param.TryGetParam("ES", out es))
            {
                es = "false";
            }
            bool escapeTables = bool.Parse(es);

            string ec = "true";

            if (!param.TryGetParam("EC", out ec))
            {
                ec = "false";
            }
            bool escapeColumns = bool.Parse(ec);

            string cn = "true";

            if (!param.TryGetParam("CN", out cn))
            {
                cn = "false";
            }
            bool capitalize = bool.Parse(cn);

            string ss = "false";

            if (!param.TryGetParam("SS", out ss))
            {
                ss = "false";
            }
            bool showStatement = bool.Parse(ss);

            string v = "1";

            if (!param.TryGetParam("V", out v))
            {
                v = "1";
            }

            DatabaseProvider dp = null;
            string           m  = null;

            if (!param.TryGetParam("M", out m))
            {
                m = "msft";
            }

            switch (m)
            {
            case "msft":
            case "mssql":
                if (i)
                {
                    dp = new MSSQLProvider(server, dbName);
                }
                else
                {
                    dp = new MSSQLProvider(server, dbName, user, psw);
                }

                break;

            case "sqlce":
                dp = new SQLCEProvider(server, psw);

                break;

            case "mysql":
                if (i)
                {
                    dp = new MySQLProvider(server, dbName);
                }
                else
                {
                    dp = new MySQLProvider(server, dbName, user, psw);
                }

                break;

            default:
                Console.WriteLine("Invalid manufacturer parameter.");
                ShowUsage();
                return;
            }

            dp.OnDatabaseConnecting += (sender, conn) => Console.WriteLine("Connecting to \"{0}\"...", FilterPsw(conn));
            dp.OnStartLoadDatabase  += (sender, cmd) => Console.WriteLine("Retriving tables via {0}...", showStatement ? cmd : string.Empty);

            SourceView db = dp.GetSourceView(schemas, namelike, escapeTables, escapeColumns);

            WXMLModel model = null;

            if (File.Exists(file))
            {
                if (merge == "error")
                {
                    Console.WriteLine("The file " + file + " is already exists.");
                    ShowUsage();
                    return;
                }
                Console.WriteLine("Loading file " + file);
                model = WXMLModel.LoadFromXml(new System.Xml.XmlTextReader(file));
            }
            else
            {
                model               = new WXMLModel();
                model.Namespace     = namesp;
                model.SchemaVersion = v;
                if (!Path.IsPathRooted(file))
                {
                    file = Path.Combine(Directory.GetCurrentDirectory(), file);
                }
                //File.Create(file);
            }

            SourceToModelConnector g = new SourceToModelConnector(db, model);

            Console.WriteLine("Generating xml...");
            HashSet <EntityDefinition> ents = new HashSet <EntityDefinition>();

            g.OnEntityCreated += (sender, entity) =>
            {
                Console.WriteLine("Create class {0} ({1})", entity.Name, entity.Identifier);
                ents.Add(entity);
            };

            g.OnPropertyCreated += (sender, prop, created) =>
            {
                EntityDefinition entity = prop.Entity;
                if (!ents.Contains(entity))
                {
                    ents.Add(entity);
                    Console.WriteLine("Alter class {0} ({1})", entity.Name, entity.Identifier);
                }
                Console.WriteLine("\t{1} property {2}.{0}", prop.Name, created ? "Add" : "Alter", entity.Name);
            };

            g.OnPropertyRemoved += (sender, prop) => Console.WriteLine("Remove: {0}.{1}", prop.Entity.Name, prop.Name);

            g.ApplySourceViewToModel(dr,
                                     hie ? relation1to1.Hierarchy : unify ? relation1to1.Unify : relation1to1.Default,
                                     transform,
                                     capitalize,
                                     dp.CaseSensitive);

            using (System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter(file, Encoding.UTF8))
            {
                writer.Formatting = System.Xml.Formatting.Indented;
                model.GetXmlDocument().Save(writer);
            }

            Console.WriteLine("Done!");
            //Console.ReadKey();
        }