예제 #1
0
        public T Find <T>(int id) where T : BaseModel, new()
        {
            Type   type = typeof(T);
            string sql  = SqlCacheBuilder <T> .GetSql(SqlCacheBuilderType.FindOne);

            SqlParameter[] sqlParameterList = new SqlParameter[] {
                new SqlParameter("@Id", id)
            };

            return(this.ExecuteSql(sql, sqlParameterList, comm =>
            {
                var reader = comm.ExecuteReader();
                if (reader.Read())
                {
                    //T t = Activator.CreateInstance<T>();
                    T t = new T();
                    foreach (var prop in type.GetProperties())
                    {
                        string propName = prop.GetMappingName();
                        prop.SetValue(t, reader[propName] is DBNull ? null : reader[propName]);
                    }
                    return t;
                }
                else
                {
                    return default;
                }
            }, SqlConnectionStringPool.DBOperateType.Read));
        }
예제 #2
0
        public bool Delete <T>(int id) where T : BaseModel, new()
        {
            Type   type = typeof(T);
            string sql  = SqlCacheBuilder <T> .GetSql(SqlCacheBuilderType.Delete);

            SqlParameter[] sqlParameterList = new SqlParameter[] {
                new SqlParameter("@Id", id)
            };
            return(this.ExecuteSql(sql, sqlParameterList, comm => comm.ExecuteNonQuery() == 1));
        }
예제 #3
0
        public bool Update <T>(T t) where T : BaseModel, new()
        {
            if (!t.ValidateModel())
            {
                return(false);
            }
            Type   type = typeof(T);
            string sql  = SqlCacheBuilder <T> .GetSql(SqlCacheBuilderType.Update);

            SqlParameter[] sqlParameterList = type.GetProperties().Select(p => new SqlParameter($"@{p.GetMappingName()}", p.GetValue(t) ?? DBNull.Value)).Append(new SqlParameter("@Id", t.Id)).ToArray();

            return(this.ExecuteSql(sql, sqlParameterList, comm =>
                                   comm.ExecuteNonQuery() == 1));
        }