Shawn

Shawn Wildermuth

Stories

Tagged with ASP.NET


Using FluentValidation in ASP.NET Core

https://fluentvalidation.net/I'm working on an example to explore some more complex modeling in EF (for SQL and NoSQL) but that's not ready so I thought I'd use it as a bed for some Validation testing I'm doing. The result is some exploration of the FluentValidation project that I haven't had time to dig into until now.

Validation is an interesting exercise in ASP.NET (Core) and trying to get it correct is quite difficult. Ultimately in this day of SPAs and mobile apps, we need a solution that handles the client and the server. If you don't validate on the server it just doesn't matter.

FluentValidation is a replacment for the existing validation attributes (DataAnnotations) that you might already be using. The idea is to separate the validation from the classes. To be clear, this doesn't replace setting up your Entity Framework types with Fluent API this is about server-side validation only. Think of it as a clearer way to define rules for validation of your models or DTOs.

Read...


What's New in ASP.NET Core 3 Preview 6

ASP.NET Core 3.0 ASP.NET Core 3 seems to be taking a similar tact to version 1 as it is adding a lot of functionality and phasing it in with different previews. While a lot of the articles seem to be focusing on the non-ASP.NET features (e.g. WPF, WinForms, etc.), I thought it would be nice to let those of you who are ASP.NET devs know what is in Preview 6 just for you.

It feels a lot like the ASP.NET MVC/API side is being treated as mature and stable as there is are not a lot of surface changes. Microsoft does seem to be doubling down on Razor Pages and Blazor. It feels like they want .NET Core to be a good fit for different styles and backgrounds of developer. This release is no different.

Let's take a look at the details:

Read...


Avoid Lazy Loading in ASP.NET

Sad CatI know I am not going to make everyone happy with this post. I've been hoping to not have to make this post, but Entity Framework Core has finally added support for Lazy Loading, so it's time.

This problem is not new. Entity Framework (not Core) also has this problem. But it's far easier to accidentally do this in that version. Luckily, Entity Framework Core has made it harder to inadvertently turn it on. Let's see what's wrong with Lazy Loading in Web Apps.

Just to make sure were talking about the same things, I'll explain how Lazy Loading works.

Read...


Converting ASP.NET Core 1.0 RC2 to RTM Bits

officetoolsIf you’re like me, you’ve changed your projects from RC1 to RC2 only to find out that the RTM was coming quickly. Well we are here so we need some steps to convert projects.

Like other posts, I am going to list all the changes I found but there are likely more that I didn’t run into. Feel free to use the comment system to add more as you like!

Rename all the “1.0.0-rc2-final” references to just “1.0.0

Read...


ASP.NET Core 1.0 Released!

DiscussThis day has been a long time coming but I want to congratulate the team at Microsoft for delivering the first version of ASP.NET Core! I’m very excited to start working with the bits on real projects.

If you haven’t had a chance to look at play with ASP.NET Core, it’s time! For the ASP.NET MVC and Web API users, the transition is pretty quick, but if you’re coming from ASP.NET Web Forms or another technology, there is a learning curve.

My sense of it is that this is a new platform, not a new development model. You are closer to the metal without having to give up the productivity of the ASP.NET you’ve always loved (and maybe hated a little). This is a mature, open source, cross platform, and fast ASP.NET. It’s a new day in Microsoft’s web platform and it’s time to be a part of it.

Read...


ASP.NET 5 Webinar

I had a great time today talking about ASP.NET 5 on a Pluralsight webinar. Over 1,000 people were able to attend. Thank you all for tuning in!

The webinar showed the very basics of what ASP.NET 5 is and why it exists. I had fun answering all the questions and wish we had time to answer more.

Here is the source code for the project we created so you can play with the basics. This version using ASP.NET 5 RC1 so if you’re viewing this later on, the bits may not work quite right.

Read...


Upgrading ASP.NET 5 Beta 8 to RC1

UPDATED: Missed fixes.

It’s that time again. ASP.NET 5 has a new release and this one has a go-live license! As announced today, the RC1 is available and a new RC2 is coming in the future.

If you’re like me, you have a couple of Beta 8 apps that you’d like to get up to speed with the RC1. In this post I’ll share with you the changes that I’ve found that impacted me. This isn’t exhaustive. Lucky for us, Beta8 to RC1 seems like a small jump (unlike earlier posts).

Read...


ASP.NET 5 and Bower

ps_logoAs most of you already know, I have a new course on ASP.NET 5. I’ve just released a teaser video that shows how the Bower.json editor in Visual Studio works.

The course was recently updated to use the ASP.NET Beta 8 bits. I am looking forward to the next update of ASP.NET and expect to continue to update the course all the way through the RTM.

If you haven’t used Bower before, it is a package manager for client-side projects (i.e. jQuery, Bootstrap, Angular, etc.). Visual Studio makes this easy in the new incarnation and this clip shows you how it works. This video is from the third module of the course.

Read...


The Week at DEVIntersection

PrintI want to thank all the great attendees I met at this week’s DEVIntersection (Fall 2015) conference in Vegas! Richard Campbell and company put on a great show!

I had the opportunity to do three talks and two of them went well (if you were at my Bootstrap talk, you know what I’m talking about). In any case, I wanted to share the slide and code with the attendees so here it is:

Slides

Read...


Upgrading from ASP.NET 5 Beta 7 to Beta 8

officetoolsIf you’ve been following along, you know by now that I’m investing my time into learning ASP.NET 5. Now that the ASP.NET team have released a new version, let me help you move your code to the new version.

The update this time includes some simple package changes but also some major API changes. I am sure I can’t cover them all here, but hopefully I’ll help you avoid the major ones.

Let’s walk through the changes I am doing when upgrading a project:

Read...


A Look at ASP.NET 5: Part 5 - The API

hddcable

The more I work with ASP.NET 5, the more it looks and feels like the old ASP.NET stack except for the hosting. That’s a good thing in most cases, but writing the API that changes.

After dealing with WCF’s bastardized tried to add REST on top of the SOAP stack, I was elated to be introduced to ASP.NET’s Web API some years back. While it let me develop APIs while thinking about REST in more natural forms, it had the problem of being so separated from the MVC stack that many of the facilities had to be duplicated in both stacks. This cognitive dissonance caused many a developer headaches (same class name but in two different namespaces). When I realized that ASP.NET 5 would be merging the two ideas, I was elated…maybe prematurely.

Read...


A Look at ASP.NET 5: Part 4 - MVC 6

measurewoodI had planned on finishing these a long time ago, but working on my Pluralsight course about ASP.NET 5 distracted me. Sorry about that.

If you’ve been doing web development in .NET, you probably have at least a passing experience with ASP.NET’s MVC framework. At it’s core, it’s a common way to build and architect web applications. The new stack is built on the same metaphors from the older versions. If you’ve been using MVC before, you won’t be lost and some of the additions are welcome.

I’ll explain what I’m doing in a series of blog posts and link them all here as I write them. The plan is to write posts about:

Part 1: Getting Started

Part 2: Startup

Part 3: Using Entity Framework 7

Part 4: ASP.NET MVC 6 (This Post)

Part 5: The API

Part 6: Web Tooling with VS2015 (coming soon)

Read...


ASP.NET 5 Identity and REST APIs

deadboltAs I’ve been digging into building apps with ASP.NET 5, I’ve had to get used to some of the new metaphors. Some of these make sense (especially if you’ve used Node before), but some are brand new to me. One of these metaphors I ran into was the idea of Identity notifications. 

The problem I was running into was one I thought many people would run into: using Identity (e.g. authentication/authorization) with REST APIs. Here is the scenario:

I was using Cookie Authentication (similar to old ASP.NET’s Forms Authentication) to log in users and to protect certain pages of the site to non-anonymous users. It’s simple to set up and works well.

Read...


New ASPNET5 Course Coming

I’m diligently working towards my new Pluralsight course and I am very excited about it. The new course is an end-to-end building of a web app using ASP.NET 5, MVC6, Entity Framework 7, Angular 1.4, and Bootstrap 3.x.

This course is a bit different than other courses I’ve done because we’re releasing it before the RTM of ASP.NET 5. Because of this, I wanted to let my students know what to expect.

The course will build a web app from an empty ASP.NET 5 project through to a deployed app. This mirrors my ASP.NET MVC5 course from a couple of years ago, but is written with the new stack. The course will build a whole new project as well. This time, you’ll be building a tool for trip planning called “The World”.

Read...


Mapping Between Entities and View Models

As many of you know, my recent course on Pluralsight dealt with Best Practices in ASP.NET: Entities, Validation and View Models. As I’ve worked with clients, there seem to be a non-ending list of ways to deal with data in ASP.NET.

One of the topics that I am passionate about as it relates to the course is how to manage the Model to Entity relationship. While being pragmatic is important, I still believe that there are many situations where you want a separate Model for a view (server or client-side) instead of just using the Entities that you’re storing data with.

The challenge here is how to do the mapping between the entities and models without having to churn out tons of boilerplate. Luckily, there are a number of solutions including AutoMapper.

Read...


Upgrading ASP.NET 5 Beta4 to Beta5

officetoolsFor my upcoming course, I have a decent sized example that I’ll be teaching from. In the process of watching ASP.NET 5 go through the sprints, I have to upgrade the project at every step. I feel at some point I should be getting better at dealing with the sprints, but not yet ; )

Here is a short post that includes the different things I had to deal with in upgrading the project. It’s not just the ASP.NET 5 update, but also EF7 and a couple of small details.

First, I followed these instructions I found as an answer to an upgrade problem on SO. It got me close:

Read...


My Entities, Validation and View Models Course

slidesA few weeks back, I released a new course on Pluralsight. This new course talks through what I consider “Best Practices” (though there are no absolutes) for ASP.NET Entities, View Models, and Validation.

I was tremendously pleased to find it made it into the top ten courses for a few days. It seems to be resonating with some students and that makes me really happy. If you’re writing ASP.NET code, this course could make your job easier!

The course covers:

Read...


A Look at ASP.NET 5: Part 3 - EF7

database planNOTE: This post has been updated for changes in Beta 7 and later.

Every web project needs some sort of data framework and ASP.NET 5 is no exception. Like it’s forbearers, ASP.NET 5 uses Entity Framework, but this version of the Entity Framework is different. It’s being re-engineered from the ground up just like the ASP.NET 5 stack.

In this, the third part of my ASP.NET 5 series, I’ll be talking about Entity Framework 7. While you can use older versions of EF or other storage mechanisms (NoSQL, Postgres, etc.), I think it’s an interesting exercise to see what the EF team is thinking in this evolving version of the framework.

Read...


A Look at ASP.NET 5: Part 2 - Startup

dipswitchIn this second post in my six-part series on ASP.NET 5, we’ll take a look at how your ASP.NET 5 applications will be configured upon startup. The startup in this new version of ASP.NET 5 is very different, but hopefully is clearer and easier to debug. At least that’s my impression so far.

If you haven’t read the prior topics, it would probably be helpful to start with the earlier articles. You can see a list of the links to the articles below:

Part 1: Getting Started

Read...


ASP.NET 5: First Impressions

cloudraysI’ve been working on a new web site wholly using the ASP.NET 5 (e.g. vNext, MVC6, etc.) for the past couple of weeks. This means using Visual Studio 2015 Preview and the new project types in ASP.NET 5.

The idea around the site is to be an example of an ASP.NET 5 site using MVC6, EF7, and Visual Studio 2015. It’s not perfect and ASP.NET 5 isn’t ready yet so I expect to continue to fix and remove hacks for quite a while, but it’s been fun to dig into a whole new stack while it’s still getting the kinks worked out.  Here are some of my first impressions.

You can see the code as it progresses, I’m I’m not done yet, but I’m sharing the code I’m working on via GitHub here:

Read...


Time Zones and Servers

Wonder-121-Time-Zone-Static-ImageI am getting married and that means I get a bunch of development tasks to do for the wedding planning. I guess it’s my own fault, I did propose with an app.

One of the tasks I had to do was create a new page on my wedding site for the day of the wedding to include things like directions and parking. Pretty simple HTML stuff, but one thing I wanted to be sure of was to only show the page on the day of the wedding. This should be easy, but the time zone of the server has kicked my ass before.

The problem is that if I check for the date, the date might get shifted if the time is after midnight where the server is. Luckily the TimeZoneInfo class makes this pretty easy in C#. The trick is to first get the time zone you care about:

Read...


Phil Haack and a Bad Joke on This Week's Podcast

As a fan of the direction of ASP.NET, I’ve been an avid fan of Phil Haack’s for some time now. His clarity of communicating why the web should work definitely helped ASP.NET become the great framework it is today. He’s now doing the same thing at GitHub!

I get to finally use my bad joke about his last name on this week’s podcast. We also talk about his start, the move to Seattle to work at Microsoft and how to keep Californian’s out of Washington state.

The Hello World Podcast is where I get to talk with some of your favorite authors, developers and speakers about how they got started in software development.

You can listen to episode 23 here:

http://wildermuth.com/hwpod/23_Phil_Haack 

Read...


New Course on .NET Code Reviews

DiscussOne of the things that I help companies with are code reviews. I love doing code reviews. It let’s me look at a large codebase with fresh eyes and help a company out with a set of recommendations for improving their process, teams and code.

After doing enough of these some patterns emerged. From this has come my new Pluralsight course on Lessons Learned from Real World .NET Code Reviews.

The purpose of this new course is to show you some of the lessons that can be learned through code reviews. I’ve broken up the lessons into several parts:

Read...


Web API 2's Attribute Routing: Looking Deeper

underwaterI recently recorded a new module for ASP.NET  Web API course (on Pluralsight) to cover the new features of Web API 2 (it’s not out yet, soon…I promise).

It was fun plumbing the depths of how it works. I generally like the feature but the implementation may change some of your code if you’re dealing with routes under the covers (i.e. for auth or versioning).

If you want a quick overview, I really like Dan Wahlin’s walkthrough of the feature here:

Read...


My New Web Development Course is Live

Are you getting ready to build a new website? Are you interested in shortening your development by using Bootstrap, AngularJS, Azure and ASP.NET? If so, my new course might be just for you.

In this new course I build a new web site from scratch. I start out with a Bootstrap template (since my design skills suck) and move through creating content, building a database, exposing a REST-ful API and building a Single Page Application. I wrap it up by publishing the site to Azure Web Sites showing you how to not only get your application up an running in the cloud, but also how to monitor it and handle standard tasks like using your own domain in Azure.

You will see every line of code (with one small exception) that I write. This isn't slide-ware…it's show-n-tell. I use a range of technologies including:

Read...