It's certainly not that. If EnsureCreated fails it will throw. If the bool represents whether or not the database exists at the end of the call then it will always be true. The intention of the return value is to allow some additional operation to happen only if the database was actually created--for example, seeding with test data.