Beispiel #1
0
        public async Task <int> AddNew <T>(IDataObject entity) where T : class, new()
        {
            ObjectProperty _ObjectProperty = ObjectPropertyMaps.Build <T>();
            Query          query           = new Query(_ObjectProperty.TableName);

            var defaultValues = new Dictionary <string, object>();

            foreach (var item in _ObjectProperty.Property)
            {
                if (item.Indexes)
                {
                    var otherProp = typeof(T).GetProperty(item.ColumnName);
                    var value     = otherProp.GetValue(entity, null);
                    defaultValues.Add(item.ColumnName, value);
                }
            }
            Serializer.JsonSerializer serializer = new Serializer.JsonSerializer();

            defaultValues[DEF_JSON_FIELD_NAME] = serializer.Serialize(entity);

            SqlResult sqlResult = _connectionProvider.Compiler.Compile(query.AsInsert(defaultValues));

            Console.WriteLine(sqlResult.Sql.ToString());

            var result = (await _connectionProvider.Connection.ExecuteAsync(sqlResult.Sql,
                                                                            sqlResult.NamedBindings,
                                                                            _Transaction,
                                                                            this.CommandTimeout));

            return(result);
        }
Beispiel #2
0
        public async Task <IEnumerable <T> > Query <T>() where T : class
        {
            ObjectProperty _ObjectProperty = ObjectPropertyMaps.Build <T>();
            Query          query           = new Query(_ObjectProperty.TableName);

            SqlResult sqlResult = _connectionProvider.Compiler.Compile(query);

            var documents = (await _connectionProvider.Connection.QueryAsync <DataObject>(sqlResult.Sql,
                                                                                          sqlResult.NamedBindings,
                                                                                          _Transaction,
                                                                                          this.CommandTimeout));

            return(documents.Select(d => _serializer.Deserialize <T>(d.Contents)));
        }
Beispiel #3
0
        public async Task <T> SingleOrDefault <T>() where T : class
        {
            ObjectProperty _ObjectProperty = ObjectPropertyMaps.Build <T>();
            Query          query           = new Query(_ObjectProperty.TableName);

            query.Limit(1);

            SqlResult sqlResult = _connectionProvider.Compiler.Compile(query);

            var result = (await _connectionProvider.Connection.QueryAsync <DataObject>(sqlResult.Sql,
                                                                                       sqlResult.NamedBindings,
                                                                                       _Transaction,
                                                                                       this.CommandTimeout)).FirstOrDefault();

            return(_serializer.Deserialize <T>(result.Contents));
        }
Beispiel #4
0
        public async Task <int> Delete <T>(IDataObject entity) where T : class, new()
        {
            ObjectProperty _ObjectProperty = ObjectPropertyMaps.Build <T>();
            Query          query           = new Query(_ObjectProperty.TableName);

            foreach (var item in _ObjectProperty.Property)
            {
                if (item.PrimaryKey)
                {
                    var otherProp = typeof(T).GetProperty(item.ColumnName);
                    var value     = otherProp.GetValue(entity, null);
                    query.Where(item.ColumnName, value);
                }
            }

            SqlResult sqlResult = _connectionProvider.Compiler.Compile(query.AsDelete());
            var       result    = (await _connectionProvider.Connection.ExecuteAsync(sqlResult.Sql,
                                                                                     sqlResult.NamedBindings,
                                                                                     _Transaction,
                                                                                     this.CommandTimeout));

            return(result);
        }