Пример #1
0
        ///<summary>
        /// 按照主键进行查找对应的数据库数据
        ///</summary>
        public static T Find <T>(string key) where T : OrmBaseModel
        {
            if (string.IsNullOrEmpty(key))
            {
                throw new ArgumentNullException("primary key can't be null");
            }

            var sqlStr = SqlCache <T> .GetSql(SqlType.Find);

            var parameters = SqlCache <T> .GetFindMySqlParameter(key);

            return(ExceteSql <T>(sqlStr, parameters, command =>
            {
                MySqlDataReader reader = command.ExecuteReader();
                if (reader.Read())
                {
                    Type type = typeof(T);
                    PropertyInfo[] properies = SqlCache <T> .AllProperties;
                    T result = Activator.CreateInstance <T>();
                    foreach (var proerty in properies)
                    {
                        var value = reader[proerty.GetMappingName()];
                        proerty.SetValue(result, value is DBNull ? null : value);
                    }
                    return result;
                }

                return default(T);
            }));
        }