Steam asparagus crisp and tender, about 3 to 4 minutes. Thinly slice on the diagonal into 1/2-inch pieces.
Preheat oven to 350°F.
Heat butter in a 10-inch oven safe skillet over medium heat. Stir in shallots and sauté until golden, about 4-5 minutes. Add steamed asparagus, salt and pepper.
In a medium bowl whisk eggs, egg whites, grated cheese, milk, salt, and pepper. Add the swiss cheese and mix well.
Add eggs to the skillet making sure eggs cover the asparagus. Cook on medium for about 4 minutes, until the edges begin to set. Move the skillet to oven. Cook about 16 to 18 minutes, or until frittata is completely cooked. Serve hot, cut into 4 to 6 equal wedges.