Esempio n. 1
0
        public void Test()
        {
            const string NAME = "UserProfile";

            var accessor = new DataAccess(APPLICATION_NAME);
            var schema   = accessor.Schema.Parse(NAME, "*, User{*}", typeof(UserProfile));

            var context = new DataInsertContext(accessor,
                                                NAME,             //name
                                                false,            //isMultiple
                                                GetUserProfile(), //data
                                                schema,           //schema
                                                null              //state
                                                );

            var statements = context.Build();

            Assert.NotNull(statements);
            Assert.NotEmpty(statements);

            var command = context.Session.Build(statements.First());

            Assert.NotNull(command);
            Assert.NotNull(command.CommandText);
            Assert.True(command.CommandText.Length > 0);
            Assert.True(command.Parameters.Count > 0);

            System.Diagnostics.Debug.WriteLine(command.CommandText);
        }
Esempio n. 2
0
        protected virtual bool OnExecute(DataInsertContext context, SelectStatement statement)
        {
            //根据生成的脚本创建对应的数据命令
            var command = context.Session.Build(statement);

            //绑定命令参数
            statement.Bind(context, command, context.Data);

            using (var reader = command.ExecuteReader())
            {
                if (reader.Read())
                {
                    for (int i = 0; i < reader.FieldCount; i++)
                    {
                        var schema = string.IsNullOrEmpty(statement.Alias) ? context.Schema.Find(reader.GetName(i)) : context.Schema.Find(statement.Alias);

                        if (schema != null)
                        {
                            if (schema.Token.Property.IsComplex && schema.Children.TryGet(reader.GetName(i), out var child))
                            {
                                schema = child;
                            }

                            schema.Token.SetValue(context.Data, reader.GetValue(i));
                        }
                    }
                }
            }

            return(true);
        }
Esempio n. 3
0
        protected virtual void OnExecute(DataInsertContext context, SelectStatement statement)
        {
            //根据生成的脚本创建对应的数据命令
            var command = context.Session.Build(statement);

            using (var reader = command.ExecuteReader())
            {
                if (reader.Read())
                {
                    for (int i = 0; i < reader.FieldCount; i++)
                    {
                        var schema = string.IsNullOrEmpty(statement.Alias) ? context.Schema.Find(reader.GetName(i)) : context.Schema.Find(statement.Alias);

                        if (schema != null)
                        {
                            schema.Token.SetValue(context.Data, reader.GetValue(i));
                        }
                    }
                }
            }
        }