コード例 #1
0
        public override async Task <T> FindAsync <T>(object keyValue)
        {
            string tableName = AttrAssistant.GetTableName(typeof(T));
            string key       = AttrAssistant.GetKey(typeof(T));

            return(GetModel <T>(await GetDataReaderAsync($"select * from {tableName} where {key} = @KeyValue limit 1", new DbParameter[] { MakeParam("@KeyValue", keyValue) })));
        }
コード例 #2
0
        public override T Find <T>(object keyValue)
        {
            string tableName = AttrAssistant.GetTableName(typeof(T));
            string key       = AttrAssistant.GetKey(typeof(T));

            return(GetModel <T>(GetDataReader($"select top 1 * from {tableName} where {key} = @KeyValue", new DbParameter[] { MakeParam("@KeyValue", keyValue) })));
        }
コード例 #3
0
        public virtual async Task <bool> DeleteModelAsync <T>(T model) where T : class
        {
            var    type = typeof(T);
            string key  = AttrAssistant.GetKey(type);

            if (!key.IsNullOrEmpty())
            {
                object primaryKeyUniqueValue = RefProperty.GetPropertyValue(model, key);
                return(await DeleteAsync <T>(primaryKeyUniqueValue));
            }

            return(false);
        }
コード例 #4
0
        public virtual async Task <bool> DeleteAsync <T>(object keyValue)
        {
            if (keyValue.IsNullOrEmpty())
            {
                throw new ArgumentException("参数 keyValue 值不能为空");
            }

            var    type      = typeof(T);
            string tableName = AttrAssistant.GetTableName(type);
            string key       = AttrAssistant.GetKey(type);

            string sql        = $" delete from {tableName} where {key}=@{key} ";
            var    parameters = new DbParameter[] {
                MakeParam($"@{key}", keyValue)
            };

            return(await ExecSQLAsync(sql, parameters));
        }
コード例 #5
0
        public override bool Delete <T>(object keyValue)
        {
            if (keyValue == null)
            {
                throw new ArgumentException("参数 keyValue 值不能为 null");
            }

            var    type      = typeof(T);
            string tableName = AttrAssistant.GetTableName(type);
            string key       = AttrAssistant.GetKey(type);

            string sql        = $" delete from {tableName} where {key}=:{key} ";
            var    parameters = new DbParameter[] {
                MakeParam($":{key}", keyValue)
            };

            return(ExecSQL(sql, parameters));
        }
コード例 #6
0
        public virtual async Task <bool> UpdateModelAsync <T>(T model) where T : class
        {
            var arrProperty = typeof(T).GetProperties();
            var builderSQL  = new StringBuilder();
            var lstParams   = new List <DbParameter>();

            foreach (var property in arrProperty)
            {
                //关键字key 和 不属于表的属性NotMapped 不更新
                if (AttrAssistant.IsKey(property) || AttrAssistant.IsNotMapped(property))
                {
                    continue;
                }

                //没有提供数据的字段也不处理
                object obj = property.GetValue(model, null);
                if (obj == null)
                {
                    continue;
                }

                builderSQL.AppendFormat("{0}=@{0} , ", property.Name);
                lstParams.Add(MakeParam("@" + property.Name, obj));
            }

            builderSQL.Remove(builderSQL.Length - 2, 2);
            string key = AttrAssistant.GetKey(typeof(T));

            if (!key.IsNullOrEmpty())
            {
                //主键值
                object primaryKeyUniqueValue = RefProperty.GetPropertyValue(model, key);
                builderSQL.AppendFormat(" where {0}=@primaryKeyUniqueValue ", key);
                lstParams.Add(MakeParam("@primaryKeyUniqueValue", primaryKeyUniqueValue));
            }

            return(await ExecSQLAsync(" update " + AttrAssistant.GetTableName(typeof(T)) + " set " + builderSQL.ToString(), lstParams.ToArray()));
        }