public SqlServerGenerator(Type entityType)
        {
            var metadata = new EntityMetadata(entityType);

            IsIdentity = metadata.FirstOrDefault(x => x.IsIdentity) != null;

            var selectFields = string.Join(", ", metadata.Select(i => $"{i.DbName} AS {i.Name}"));
            var insertFields = string.Join(", ", metadata.Where(i => !i.IsIdentity).Select(i => i.DbName));
            var insertValues = string.Join(", ", metadata.Where(i => !i.IsIdentity).Select(i => $"@{i.Name}"));
            var updatePairs = string.Join(", ", metadata.Where(i => !i.IsPrimaryKey).Select(i => $"{i.DbName} = @{i.Name}"));
            var whereCondition = string.Join(" AND ", metadata.Where(i => i.IsPrimaryKey).Select(i => $"{i.DbName} = @{i.Name}"));

            SelectAllSql = $"SELECT {selectFields} FROM {metadata.DbName}";
            SelectSql = SelectAllSql;
            if (whereCondition.Length > 0)
                SelectSql += $" WHERE {whereCondition}";

            InsertSql = $"INSERT INTO {metadata.DbName} ({insertFields}) VALUES ({insertValues})";
            if (IsIdentity)
            {
                InsertSql += Environment.NewLine;
                InsertSql += "SELECT SCOPE_IDENTITY()";
            }

            UpdateSql = $"UPDATE {metadata.DbName} SET {updatePairs}";
            if (whereCondition.Length > 0)
                UpdateSql += $" WHERE {whereCondition}";

            DeleteAllSql = $"DELETE FROM {metadata.DbName}";
            DeleteSql = DeleteAllSql;
            if (whereCondition.Length > 0)
                DeleteSql += $" WHERE {whereCondition}";

            CountSql = $"SELECT COUNT(1) FROM {metadata.DbName}";
        }