Beispiel #1
0
        public TSource GetDataById <TSource>(int Id)
            where TSource : BaseModel
        {
            //string _sqlConnectString = ConfigurationManager.ConnectionStrings["First"].ConnectionString.ToString();
            var type = typeof(TSource);

            ModelsAndEntitiesAttribute modelsAndEntitiesAttribute = (ModelsAndEntitiesAttribute)type.GetCustomAttribute(typeof(ModelsAndEntitiesAttribute));
            string sqlCommandText =
                $"SELECT {string.Join(',', type.GetProperties().Select(p => { return $"[{p.GetEntityToModelByProperty()}] as {p.Name}"; }))} FROM [{(modelsAndEntitiesAttribute == null ? type.Name : modelsAndEntitiesAttribute.EntityName)}] WHERE Id = {Id}";

            //using (SqlConnection sqlConnection = new SqlConnection(_sqlConnectString))
            //{

            //    SqlCommand sqlCommand = new SqlCommand(sqlCommandText, sqlConnection);
            //    sqlConnection.Open();
            //    var sqlDataReader = sqlCommand.ExecuteReader();

            //    if (sqlDataReader.Read())
            //    {
            //        return Trans<TSource>(type, sqlDataReader);
            //    }
            //    else
            //    {
            //        return null;
            //    }
            //}

            return(ExcuteSql(sqlCommandText, command =>
            {
                var sqlDataReader = command.ExecuteReader();

                if (sqlDataReader.Read())
                {
                    return Trans <TSource>(type, sqlDataReader);
                }
                else
                {
                    return null;
                }
            }));
        }
        public static string GetEntityToModelByProperty(this PropertyInfo property)
        {
            ModelsAndEntitiesAttribute modelDiscriptionAttribute = (ModelsAndEntitiesAttribute)property.GetCustomAttribute(typeof(ModelsAndEntitiesAttribute));

            return(modelDiscriptionAttribute != null ? modelDiscriptionAttribute.EntityName : property.Name);
        }