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