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); }
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); }
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)); } } } } }